当我运行ng c my-component
时,我得到一个包含2个beforeEach方法的规范文件。
describe('MyComponent', () => {
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MyComponent ]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
为什么我有2个
beforeEach
,我都需要吗?所有教程仅显示第二个,即非异步的。运行基本测试所需的代码也分为这两种方法。任何原因?感谢您的帮助。
最佳答案
正如 compileComponents()一样,是一个异步函数,返回一个promise,beforeEach被标记为异步。因此,Jasmine知道在进行下一步之前,所有问题都必须解决(->这里是beforeEach的第二步)。
第二个beforeEach仅包含同步代码,因此未标记为异步。
如果您将所有内容都放在一个位置上,则每次调用 createComponent(MyComponent)之前, compileComponents()可能无法解析-此可能会导致错误,但是如果 compileComponents()足够快,则不会。
关于angular - 为什么ng cli生成的组件的spec文件具有2 beforeeach方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52170948/