Jasmine中什么是“应该创建”测试用例

问题描述 投票:0回答:1

我是使用Jasmine和Karma在Angular中进行单元测试的新手。我是实习生我正在查看规格文件。我想知道should create在此上下文中的含义。 TimeselectorComponent是我要测试的组件。我从大四学习了密码。代码是这样的:

import { TestBed, ComponentFixture, async } from '@angular/core/testing';
import { TimeselectorComponent } from './timeselector.component';
...

describe('TimeselectorComponent', () => {
    let fixture: ComponentFixture<TimeselectorComponent>;

    beforeEach(async(() => {

        TestBed.configureTestingModule({
            imports: [
                ...
            ],
            providers: [...],
            declarations: [TimeselectorComponent],
            schemas: [NO_ERRORS_SCHEMA]
        }).compileComponents();
    }));

    beforeEach(() => {
        fixture = TestBed.createComponent(TimeselectorComponent);
    });

    it('should create', () => {
        expect(fixture.componentInstance).toBeTruthy();
    });

    // other test cases
});

也有其他测试用例,但现在我对'should create'用例感到好奇。我的理解是,它正在尝试测试组件是否已初始化/创建。如果我错了,请纠正我。请告诉我更多有关上述代码的信息。也想了解compileComponent()方法。我检查了此链接,但只能了解一点:

compileComponents() is asynchronous, we must use async()

我也正在研究这个问题:

Error: Please call “TestBed.compileComponents” before your test

angular unit-testing karma-jasmine
1个回答
1
投票

每个it块内的字符串是测试用例名称。第一个测试用例是应创建的,您将其与描述中的字符串组合在一起,即TimeSelectorComponent,它将成为应创建的TimeSelectorComponent。该测试用例正在检查TimeSelector组件是否已初始化。您还可以根据需要或编写测试用例的方式更改此字符串。

Compilecomponents是一种编译您在测试台中提到的所有组件的方法。 Take任务需要时间,这就是为什么它是异步的,这样才不会阻塞您的主线程,并且如果您愿意,可以并行执行其他一些设置。这就是为什么必须使用async关键字的原因,以便在每个关键字可以等待内部执行的所有异步任务完成之前。因为如果我们的组件未准备好,测试用例将失败。

© www.soinside.com 2019 - 2024. All rights reserved.