Jasmine Spy не работает для контроллера Angularjs + RequireJs - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь протестировать контроллер AngularJS с сервисом, как показано ниже:

define(['app', 'angular', 'angular-mocks'], function(app, angular, angularMocks) {
 describe("Products Controller", function() {
        var $controller, ProductService, createController, scope;

        beforeEach(function() {
          module('app');

          // Provide will help us create fake implementations for our dependencies
          module(function($provide) {

            // Fake StoreService Implementation returning a promise
            $provide.value('ProductService', {
                getProducts: function() {
                return { 
                  then: function(callback) {return callback([{ some: "thing", hoursInfo: {isOpen: true}}]);}
                };
              }
            });
            return null;
          });
        });

        beforeEach(function() {

          inject(function($controller, $rootScope, _ProductService_) {
            scope = $rootScope.$new();
            ProductService = _ProductService_;
            createController = function(params) {
              return $controller("ProductsController", {
                $scope: scope
              });
            };
          });
        });

        it("should call the store service to retrieve the store list", function() {         
          spyOn(ProductService, 'getProducts').and.callThrough();         
          createController();
          expect(ProductService.getProducts).toHaveBeenCalled();
        });
      });
    });

Но я получаю сообщение об ошибке "Ошибка: вызван ожидаемый шпион getProducts."

Хотя с жасминомвызывается spyon, тестовый набор не пройден.

...