Жасмин высмеивает внешнюю функцию API с помощью аргумента обратного вызова - PullRequest
0 голосов
/ 16 мая 2019

Я вызываю метод внешнего API для метода post, но я не могу охватить его с помощью jasmine.

Я уже смоделировал функцию внешнего API с помощью объекта window и создал функциювысмеивать обратный вызов, возвращая какой-то объект.Но ничего не помогает.

Javascript

function loadApi() {
  extAPI.load({
    email: 'testEmail.test.com'
  }, function(resultObject) {
     if(resultObject.approved) {
       // callback with result object - not able to cover this
     }
  });
}

Spec.js & Макеты

beforeEach(function() {
  function mockLoadCallback() {
            var object = {
              approved: false
            };

            return object;
        }
  widnow.extAPI = {
       load: function(object, Function) {
                    var deferred = $.Deferred();

                    deferred.resolve(mockLoadCallback);

                    return deferred.promise();
        }
  }

});

it('load the external API response', function() {
  var loadSpy = spyOn(extAPI, 'load');
  loadApi();
  expect(loadSpy).toHaveBeenCalled();
});

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

1 Ответ

0 голосов
/ 17 мая 2019

Вам не хватает .and.callThrough() после звонка в spyOn`.Ваш тест должен выглядеть следующим образом:

it('load the external API response', function() {
  var loadSpy = spyOn(extAPI, 'load').and.callThrough();
  loadApi();
  expect(loadSpy).toHaveBeenCalled();
});

Метод callThrough гарантирует, что после вызова шпиона шпион делегирует исходное поведение.

...