2

Я делаю такой сервис.как работает функция переключения в угловом режиме?

(function(){ 
    'use strict'; 
    angular.module('desert').service('desertmanager',desertmanager); 

    function desertmanager(){ 
    this.mode='pie'; 
    this.setMode=function(val){ 
     this.mode=val; 
    } 

    this.getMode=function(){ 
     return this.mode; 
    } 

    } 
})(); 

использовал эту услугу в мой контроллер, как это ...

(function(){ 
    'use strict'; 
    angular.module('app.home').controller('homeCntrl',homeCntrl); 
    homeCntrl.$inject=['desertmanager']; 

    function homeCntrl(desertmanager){ 
    //alert(desertmanager.getMode()); 
    var home=this; 
    home.clickbtn=function(){ 

     home.message='test'; 
     alert(home.message) 
    } 

    home.toggle=function(){ 
     if(desertmanager.getMode()=='pie'){ 
     desertmanager.setMode('cake') 
     }else{ 
     desertmanager.setMode('yellow') 
     } 
    } 
    } 
})(); 

Теперь мне нужно, чтобы проверить свою функцию переключения. я так, как below.But я получаю сообщение об ошибке это

describe('toggle mode ',function(){ 
    var modeSpy; 
    beforeEach(function(){ 
     modeSpy=spyOn(desertmanager,'getMode').andReturn('pie'); 
    }) 

    it('called',function(){ 
     controller.toggle(); 
     expect(modeSpy).toHaveBeenCalledWith('cake'); 

    }) 
    }) 

Я получаю эту ошибку

TypeError:. SpyOn (...) andReturn не является функцией

как проверить мою функцию переключения? как удалить эту ошибку?

вот мой код http://plnkr.co/edit/GAdTPFfl9LGXTczCG1KL?p=preview

ответ

1

Первая ошибка: вы используете Жасмин 2, и andReturn() не существует в Jasmine 2. The correct syntax является and.returnValue().

Вторая ошибка: вы не следите за setMode(), хотя вы хотите проверить, что она была вызвана.

Вот фиксированная версия вашего plunkr: http://plnkr.co/edit/JizWQijbH8FkCAI6jzpM?p=preview.

describe('toggle mode ',function(){ 
    beforeEach(function(){ 
     spyOn(desertmanager,'getMode').and.returnValue('pie'); 
     spyOn(desertmanager, 'setMode'); 
    }); 

    it('called',function(){ 
     controller.toggle(); 
     expect(desertmanager.setMode).toHaveBeenCalledWith('cake'); 
    }); 
}); 
+0

Что такое последняя версия? Я видел последнюю версию 2.4? is и метод возврата в 2.4? мы можем изменить код на версию 2.4 istead из 2 – user944513

+0

Нет. Это в 1.x. Почему вы не читаете документацию? –

+0

чтение документа только что ... для справки – user944513

Смежные вопросы