Как проверить функцию обратного вызова с Жасмин - PullRequest
0 голосов
/ 05 июня 2018

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

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

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

Спасибо

1 Ответ

0 голосов
/ 06 июня 2018

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

  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 тестов, потому что вам, вероятно, придется тестировать различные пути через каждыйиз этих функций.

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

...