Новая функция жасмина в функции error

0

Это угловой источник 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
        }

    };
});

Это источник жасмина

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

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

    });

Жасмин-сусе не работает, потому что новый AAA() на заводе helpMe, и новый AAA в нем() {} отличается.

Теги:
jasmine

1 ответ

2

Вам не хватает цели инъекции зависимостей, а именно, чтобы избежать создания экземпляров коллаборационистов, и пусть среда их внедряет, чтобы сделать код тестируемым.

Здесь переписанная версия вашего кода:

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

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

app.factory('helpMe', function(AAA) {
    var play = function() {
        AAA.say();  
    };

    return {
        play: play
    };
});

И тест:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню