(所有这些示例代码都是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 :(得分: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)
最后,以便失败的案件不仅仅是超时。