我有一个简单的角度服务:
app.service('myService', function() {
this.getMsg = function (status, data) {
var errMsg = '';
if (status.toString()[0] == 4) {
if ((data.message.indexOf("3 tries left") > -1) || (data.message.indexOf("2 tries left")) > -1){
errMsg = "Opps, try later";
}
else {
errMsg = "Please try again.";
}
}
if (status.toString()[0] == 5) {
errMsg = "Under Construction";
}
return errMsg;
};
});
我已经编写了一个测试来确保我的getMsg
函数存在,但是当我尝试测试函数时,我收到一个错误:
TypeError:data.message未定义
测试:
describe('myService', function (){
var myService;
beforeEach(function (){
module('myApp');
inject(function(_myService_) {
myService = _myService_;
});
});
it('should have an getMsg function', function () {
expect(angular.isFunction(myService.getMsg)).toBe(true);
});
it('test fucntion', function (){
var result = myService.getMsg(400, "some text to test");
expect(result).toBe('bar!!!');
});
});
答案 0 :(得分:2)
您在编写函数时期望getMsg
函数的行为方式与您在测试函数时的预期行为方式之间存在差异。
当你编写它时,你希望第二个参数是一个具有message
属性的对象,这是一个字符串。
测试时,您希望第二个参数为字符串。
如果您的功能正确,则应更改此行
var result = myService.getMsg(400, "some text to test");
到
var result = myService.getMsg(400, { message : "some text to test"});