Как проверить функцию обратного вызова с помощью Jasmine

Lioo спросил: 12 мая 2018 в 05:02 в: javascript

Задайте функцию с обратным вызовом следующим образом:

myfunction('some value', function(){
    //do something...
})

Как я могу ее покрыть и проверить с помощью Jasmine? Он никогда не входит в поток внутри обратного вызова function(){....

Спасибо

1 ответ

Andrew Eisenberg ответил: 12 мая 2018 в 01:58

В таких случаях есть (по крайней мере) два модульных теста, которые необходимо создать:

  1. тест для myFunction
  2. тест для обратного вызова

Таким образом, он может выглядеть примерно так:

it('should test myFunction', () => {
  let spy = jasmine.createSpy();
  let result = myFunction(spy);
  expect(spy).toHaveBeenCalledWith(...args);
  expect(result).toBeCorrectOrSomething();
});it('should test the callback', () => {
  let callback = createCallback();
  let result = callback(...args);
  expect(result).toBeCorrectOrSomething();
});

Обратите внимание, что я говорю не менее 2 теста, потому что вам, вероятно, придется протестировать разные пути через каждую из этих функций.

Также обратите внимание, что для этого требуется, чтобы вы имели доступ к обратному вызову в своих тестах, поэтому его необходимо открыть из модуль, который вы создаете.