当我运行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/

10-12 13:59