Жасмин - Как мне издеваться над окончательным звонком? - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть тест, который создает такой контроллер ...

  this.createScope = function(scope) {
    if (scope) {
      this.scope = scope;
    } else {
      this.scope = $rootScope.$new();
    }
    this.controller = $controller("menuController", {
      "$scope": this.scope,
      updateActionList: function() {
        return {
          finally: function() {}
        };
      }
    });
  };

Я добавил эту часть ...

      updateActionList: function() {
        return {
          finally: function() {}
        };
      }

Потому что, когда я запускаю свои тесты, все они терпят неудачу, потому что ....

TypeError: undefined is not an object (evaluating 'updateActionList().finally')

updateActionList () - это локальная функция, которая вызывается в реальном коде следующим образом ...

updateActionList().finally(function() {
    //Do stuff
});

updateActionList () возвращает обещание от getThings () с блоками .then и .finally.

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

Или мне нужно еще кое-что сделать? Я не уверен, почему окончательно не определено.

1 Ответ

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

Итак, этот звонок ...

updateActionList().finally(function() {
    //Do stuff
});

возвращает обещание от какой-то другой функции, по сути, моя проблема заключалась в том, что функция, возвращающая обещание до updateActionList () mock, требовала еще одного вызова finally.

  this.getThings = jasmine.createSpy("getThings").and.returnValue({
    then: function(cb) {
      cb(self.mockPlugins);
      return {
        finally: function(cb) {
          cb();
          return {
            finally: function(cb) {
              cb();
            }
          };
        }
      };
    }
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...