【问题标题】:Mocking a Service into Controller将服务模拟到控制器中
【发布时间】:2015-03-11 20:46:09
【问题描述】:

我正在尝试使用 Jasmine 2.2.0:CheckoutService.patch() 模拟一项服务,它会将一个承诺返回到我的CheckoutController

describe('CheckoutController', function() {
    var $scope, vm, checkoutServiceMock, def;

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

        checkoutServiceMock = jasmine.createSpyObj('CheckoutService', ['patch']);

        inject(function($rootScope, $controller, $q){
            def = $q.defer();

            $scope = $rootScope.$new();

            vm = $controller('CheckoutController', {
                $scope: $scope,
                CheckoutService: checkoutServiceMock
            });

            checkoutServiceMock.patch.andReturn(def.promise);
        });
   });
});

但我得到:TypeError: 'undefined' is not a function (evaluating 'checkoutServiceMock.patch.andReturn(def.promise)')

我错过了什么?

【问题讨论】:

标签: javascript angularjs testing jasmine karma-jasmine


【解决方案1】:

我猜你应该把andReturn改成and.callfake(),例如:

spyOn(checkoutServiceMock, "patch").and.callFake(function() {
  return def.promise;
});

有关 Jasmine 2.2,请参阅 docs

【讨论】:

    猜你喜欢
    • 2013-06-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 2014-01-16
    • 2014-11-22
    • 1970-01-01
    • 2016-08-18
    相关资源
    最近更新 更多