繁体   English   中英

在 Meteor 中使用 Jasmine 测试异步函数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM