无法在方法上创建间谍



我的服务是

var testappserviceone = angular.module('testappserviceonemodule',[])
testappserviceone.factory('testappServiceone',[function(){
    return function (x,y) {
        function addobj (x,y){
            return x+y;
        }
        return{
            add:addobj
        }
    }
}]);

我的测试套件是

describe('testappserviceone add method functionality', function(){
    beforeEach(function () {
        spyOn(testappServiceone(10,15),'add').and.callThrough();
    });
    it('testappServiceone add method functionality', function() {
        testappServiceone(10,15).add();
        expect(testappServiceone(10,15).add).toHaveBeenCalled();
    });
});

我得到的例外是

期望间谍,但有效。

我认为间谍((不是在创造间谍。请帮助我理解和解决此问题。

每次我们评估此表达式/呼叫函数时,它会在属性添加

中返回使用新函数的新对象
testappServiceone(10,15) // -> Object A
testappServiceone(10,15) // -> Object A'
// A !== A'

在这种情况下,我应该写类似的东西

var foo = testappServiceone(10,15);
spyOn(foo, 'add');
foo.add()
expect(foo.add).toHaveBeenCalled()

参考:https://github.com/karma-runner/karma/issues/2751

最新更新