我在MeteorJS中有一个辅助函数,如下所示:
Template.cars.helpers({
models : function() {
var currentUserId = Meteor.userId();
return cars.find({userId: currentUserId});
}
});
我正在尝试编写一个Jasmine测试,它将检查调用models
帮助程序时是否调用Meteor.userId()函数。我已经模拟了Meteor.userId()函数,我的代码如下:
describe("test cars collection", function() {
beforeEach(function() {
var Meteor = {
userId: function() {
return 1;
}
};
});
it("userId should be called once", function() {
Template.cars.__helpers[' models']();
spyOn(Meteor, 'userId').and.callThrough();
expect(Meteor.userId.calls.count()).toBe(1);
});
});
但是,结果显示Expected 0 to be 1.
我是Jasmine的新手,并且在调用Meteor.userId()
帮助程序时并不知道如何正确调用models
函数。我认为我监视它的方式是错误的,但我无法弄明白。有人可以帮忙吗?
答案 0 :(得分:1)
.calls.count()
:返回调用间谍的次数
但是你需要在调用函数之前设置间谍,这样你就可以检查你的函数是否只被调用过一次:
it("userId should be called once", function() {
spyOn(Meteor, 'userId').and.callThrough(); // <-- spy on the function call first
Template.cars.__helpers[' models'](); // <-- execute the code which calls `Meteor.userId()`
expect(Meteor.userId.calls.count()).toBe(1); // <-- Now this should work
});