在找不到Jasmine抛出方法的模拟Angular服务

时间:2017-10-24 21:10:52

标签: angularjs jasmine karma-jasmine

In this plunk我有一个Angular / Jasmine测试试图模拟服务功能。模拟的服务函数需要由服务中的另一个函数调用。

这是我得到的错误:

Error: getTheDate() method does not exist

这是我的尝试,其中测试的函数getTheMonth应该调用模拟函数getTheDate,似乎spyOn使用不正确:

angular.module("mymodule", [])

.service('myService', function(){

    this.getTheDate = function() {
        return new Date();
    };


    this.getTheMonth = function() {
         var d = this.getTheDate();
         return d.getMonth();
    };
})

describe("Testing date functions", function() {

    beforeEach(function(myService) {
        module("mymodule");
        var d = new Date();
        d.setDate(12)
        d.setMonth(2);
        d.setFullYear(2018);
        spyOn(myService, 'getTheDate').and.returnValue(d);
    });


    it('should return the month',

        inject(function(myService) {

        expect(myService.getTheMonth()).toEqual(2);


    }));

});

1 个答案:

答案 0 :(得分:1)

beforeEach(function(myService) {
  module("mymodule");

应该是

beforeEach(module("mymodule"));
beforeEach(inject(function(myService) {

Updated plunkr