我的Meteor.methods有问题。我需要测试相当复杂的功能,但我不知道如何获得返回值。为了我自己的需要,我写了一个简单的代码:
Meteor.methods({
returnTrue: function() {
return true;
},
returnFalse: function(){
return false;
}
});
describe("Function", function() {
var tmp;
it("expect to be true", function(){
Meteor.call('returnTrue', function(error, result){
if(error){
tmp = false;
}
else{
tmp = result;
}
});
expect(tmp).toBe(true);
});
});
在我的测试中,我预计未定义为真。 我试图使用Session.set和Session.get来完成它,但结果相同。 知道我该怎么办?
答案 0 :(得分:1)
Here这个问题可能会引起您的兴趣。您的代码中有一些误导:
expect
,因此tmp
尚未设置!这是一个建议!
describe("Function", function() {
var tmp;
it("expect to be true", function(){
spyOn(Meteor, "call").and.callThrough(); // to actually call the method
Meteor.call('returnTrue', function(error, result){
if(error){
tmp = false;
}
else{
tmp = result;
}
expect(tmp).toBe(true); // moved the check inside the callback, once the call is actually executed
});
expect(Meteor.call).toHaveBeenCalled(); // check if the method has been called
});
});