Angularjs 切换功能如何在角度模式下工作?
我提供这样的服务Angularjs 切换功能如何在角度模式下工作?,angularjs,angularjs-directive,jasmine,karma-runner,karma-jasmine,Angularjs,Angularjs Directive,Jasmine,Karma Runner,Karma Jasmine,我提供这样的服务 (function(){ 'use strict'; angular.module('desert').service('desertmanager',desertmanager); function desertmanager(){ this.mode='pie'; this.setMode=function(val){ this.mode=val; } this.getMode=function(){
(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')
}
}
}
})();
现在我需要测试我的切换功能。
我喜欢这样做如下。但我得到这个错误
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不是函数
如何测试我的切换功能?如何删除此错误
这是我的密码
第一个错误:您使用的是Jasmine 2,
andReturn()
在Jasmine 2中不存在。是和.returnValue()
第二个错误:您没有监视setMode()
,尽管您想检查它是否已被调用
以下是您的plunkr的固定版本:
最新版本是什么?我看到的最新版本是2.4?andReturn方法是否在2.4中?我们能把代码改成2.4版本吗
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');
});
});