почему компонент, сгенерированный ng cli, имеет спецификационный файл с 2 перед каждым методом? - PullRequest
0 голосов
/ 04 сентября 2018

Когда я запускаю 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, мне они оба нужны? Все учебное пособие показывает только второй, то есть не асинхронный один. Также код, необходимый для выполнения базового теста, поделен между этими двумя методами. Любая причина?

Спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

As compileComponents () - это асинхронная функция, возвращающая обещание, которое beforeEach помечено async . Таким образом, Жасмин знает, что все должно быть решено, прежде чем перейти к следующему шагу (-> здесь второй перед каждой). Второй beforeEach включает только синхронный код, поэтому он не помечается async .

Если вы поместите все в одно перед каждым, может случиться так, что compileComponents () не будет разрешен до тех пор, пока не будет вызван createComponent (MyComponent) - это может привести к ошибки, но если compileComponents () достаточно быстро, это не так.

0 голосов
/ 04 сентября 2018

Файл спецификации является файлом набора тестов. По сути, один из beforeEach устанавливает ваш тестовый стенд, а другой создает экземпляр вашего компонента для тестирования. Они нужны вам как для написания ваших тестов, так и для реальных тестов. Единственный тест, который вы выполняете - это блок it. Так что, по сути, вам решать, как определить вашу тестовую среду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...