[英]Testing an async function with Jasmine in Meteor
我在 Stackoverflow 上查看了与此相关的其他几个问题,但似乎仍然无法解决我的问题。 无论我似乎做什么,似乎都没有调用 Meteor.call,或者如果我可以调用它(例如在下面的代码示例中),无论jasmine.DEFAULT_TIMEOUT_INTERVAL
设置为什么,我继续收到以下错误:
Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
这是我的 Jasmine 测试的样子:
it("Should be created and not assigned to anyone", function(done) {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 5000000;
// Confirm that the User Has Logged in
expect(Meteor.userId()).not.toBeNull();
var contact = null;
var text = "This is a testing task";
spyOn(Tasks, "insert");
spyOn(Meteor, "call");
Meteor.call('addTask', contact, text, function(error, result) {
expect(error).toBeUndefined();
expect(result).not.toBeNull();
done();
});
expect(Meteor.call).toHaveBeenCalled();
});
});
我的 addTask 函数如下所示:
Meteor.methods({
addTask: function (contact, text) {
... // addTask Code, removed for brevity
},
});
我已经坚持了几个星期,任何人都可以提供的任何帮助都会非常有帮助。
处理程序中的期望永远不会执行,因为 Jasmine 没有调用原始的 .call() 方法。 为了使它工作,而不是spyOn(Meteor, "call");
你应该写spyOn(Meteor, "call").and.callThrough();
它将在执行 Jasmine 间谍逻辑后调用原始处理程序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.