Jasmine新功能在功能错误

时间:2015-11-07 06:57:57

标签: angularjs jasmine

这是有角度的javascript源

var app = angular.module("myApp", []);

app.factory('AAA', function(){
    return function(){
        return {
            say:function(){
            console.log('I am A');
            }
        };
    };
});

app.factory('helpMe', function(AAA){
    return function(){

        var type = new AAA();

        var play = function(){
            type.say();  
        };

        return {
            play:play
        }

    };
});

这是Jasmine Source

    it('helMe Test',function(){
        var helpMe = new helpMe();
        var AAA = new AAA();

        spyOn(AAA,'say');
        helpMe.play();
        expect(AAA.say).toHaveBeenCalled();

    });

茉莉花源不起作用 因为helpMe工厂中的新AAA()和它中的新AAA(){}是不同的。

1 个答案:

答案 0 :(得分:2)

你错过了依赖注入的全部内容,这正是为了避免创建协作者的实例,而是让框架注入它们,以使代码可以测试。

这是您的代码的重写版本:

it('helMe Test', inject(function(AAA, helpMe) {
    spyOn(AAA, 'say');
    helpMe.play();
    expect(AAA.say).toHaveBeenCalled();
}));

测试:

{{1}}