Не получено сообщение SPE C НЕ ИМЕЕТ ОЖИДАНИЯ для теста asyn c - PullRequest
0 голосов
/ 02 марта 2020

Я создаю тестовый пример, чтобы продемонстрировать angular тестирование с асинхронным кодом, и я хочу получить SPE C НЕ ИСПОЛЬЗОВАТЬ, у меня есть следующий код:

   describe('EmployeeService', () => {
  let service: EmployeeService; 

  beforeEach(() => TestBed.configureTestingModule({
    imports: [HttpClientTestingModule],
    providers: [EmployeeService]
  }).compileComponents());

  beforeEach(() => {
    service = TestBed.get(EmployeeService);
  });

  it('should be return list of employee names ', () => {

        service.getListOfEmpNames().subscribe((data: string[]) => {

        expect(data.length).toBeGreaterThan(0);
    });

  });

});

и метод в EmployeeService:

getListOfEmpNames(): Observable<string[]>{
    return of(['Rohan', 'Ethan', 'Pruthvi']);
  }

Согласно моему пониманию, когда мы тестируем асинхронный код без done или asyn c или fakeasyn c, он пройдет тест, но также отобразит сообщение перед описанием - SPE C HAS Никаких ожиданий (пожалуйста, исправьте мое понимание, если не так). Также хотите узнать, есть ли какая-либо конфигурация, которая может помочь добавить или подавить такое сообщение.

1 Ответ

1 голос
/ 02 марта 2020

Я подозрительно похож на Caramiriel, когда подписка не запускается.

Попробуйте:

it('should be return list of employee names ', async(done) => {
  const data = await service.getListofEmpNames().pipe(take(1)).toPromise();
  expect(data.length).toBeGreatherThan(0);
  done();
});

Мне обычно не нравится subscribes в моих тестах, потому что я не не знаю, было ли это когда-либо выполнено. Я жду, когда обещание будет выполнено (тогда я знаю, что оно выполнено), и в этом случае, если getListOfEmpNames никогда ничего не вернет, тест застрянет при выполнении обещания, что даст вам лучшую "разработку".

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