gpt4 book ai didi

javascript - 使用 Jasmine 测试 Meteor 辅助函数时出错

转载 作者:行者123 更新时间:2023-12-03 07:36:20 24 4
gpt4 key购买 nike

我在 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);
});
});

但是,结果显示预期 0 为 1。我是 Jasmine 新手,并不真正知道如何正确调用 Meteor.userId() code> 函数,同时调用 models 帮助器。我认为我监视它的方式是错误的,但我一直无法弄清楚。有人可以帮忙吗?

最佳答案

来自Jasmine Docs

.calls.count(): returns the number of times the spy was called

但是你需要在调用函数之前设置 spy ,这样你就可以检查你的函数是否只被调用过一次,如下所示:

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
});

关于javascript - 使用 Jasmine 测试 Meteor 辅助函数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35598342/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com