簡體   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