2016-09-22 42 views
0

(全本示例代碼的CoffeeScript)嘗試和失敗茉莉測試承諾

我有一個通用的承諾,像這樣:

describe "foo",() -> 
    it "foo",() -> 

    p = new Promise (r) -> r(1) 
    p.then (x) -> 
     console.log("promise run") 
     expect(x).toEqual(2) 

預計這將失敗,但它不」噸。期望從未被擊中,也沒有任何記錄。

the jasmine team's blog post on the topic看來我可以寫這樣的事:

p.then (x) -> 
    expect(x).toEqual(2) 
    done() 

,但它具有相同的效果。

的博客文章建議mock-promises庫,這在我以前寫:

p.then (x) -> 
    console.log x 
    expect(x).toEqual(2) 
MockPromises.executeForPromise(p); 

,但它具有相同的效果(期望是從不打)

+0

如果您的測試跑步者仍然不接受承諾作爲2016年的回報值,那麼可能是時候改變它(或只是更新?) – Bergi

+0

protip:'p = Promise.resolve 1' – Bergi

+0

@bergi,你有看到我已經爲自己發佈了一個答案?這可能是我錯過了一些非常小的事情。無論如何,你有沒有比茉莉花更好的測試庫的建議? –

回答

0

即時的滿足感:

這是一個簡單的修復:

我所需要做的就是通過done作爲it函數的參數:

describe "foo",() -> 
    it "foo", (done) -> 
    p = new Promise (r) -> r(1) 
    p.then (x) -> 
     console.log x 
     expect(x).toEqual(2) 
     done() 

由於在意見建議我也應該在末尾添加

.catch(done) 

,這樣失敗的案例不只是超時。