我是使用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
每个it块内的字符串是测试用例名称。第一个测试用例是应创建的,您将其与描述中的字符串组合在一起,即TimeSelectorComponent,它将成为应创建的TimeSelectorComponent。该测试用例正在检查TimeSelector组件是否已初始化。您还可以根据需要或编写测试用例的方式更改此字符串。
Compilecomponents是一种编译您在测试台中提到的所有组件的方法。 Take任务需要时间,这就是为什么它是异步的,这样才不会阻塞您的主线程,并且如果您愿意,可以并行执行其他一些设置。这就是为什么必须使用async关键字的原因,以便在每个关键字可以等待内部执行的所有异步任务完成之前。因为如果我们的组件未准备好,测试用例将失败。