我正在使用ui-router编写一个角度应用程序,我正在为我的ui-router配置编写测试。
具体来说,我希望测试绑定到州的onEnter
和onExit
回调。这些回调依赖于在状态上定义的解析。如何模拟onEnter
和onExit
函数中使用的结果?
例如,假设我的状态定义如下:
// bobConfig.js
.state('bob', {
url: '/bob',
templateUrl: "bob.html",
controller: "bobController",
resolve: {
currentUser: function() {
return "Bob Bobbertson";
}
},
onEnter: function(currentUser) {
if(currentUser == "Bob Bobbertson") {
console.log("hello bob!");
} else {
console.log("hey, you aren't bob!");
}
}
});
在此示例中,我想测试"hey, you aren't bob!"
消息功能。
对于初学者,我写的是这样的:
// productsConfig.spec.js
describe("Products state config", function(){
it("should tell everyone but bob that they aren't bob", function() {
// set up currentUser to return "Sally Sallington"
expectYouArentBobMessageToBePrinted();
});
});
在上面的茉莉花测试示例中,我如何制作,以便我currentUser
中使用的onEnter
的值为"Sally Sallington"
?
答案 0 :(得分:4)
您可以使用与其他Angular值/服务相同的方式模拟已解析的值。我用的是:
describe('Products state config', function() {
beforeEach(function() {
module('whatever.module', function($provide) {
$provide.service('currentUser', function() {
return 'Some User';
});
});
});
it('should do something ...', function() {
// ...
});
});
您甚至可以参考可以从每个单独测试中更改的变量。