尝试并且未能使用Jasmine测试承诺

时间:2016-09-22 19:43:58

标签: javascript jasmine promise

(所有这些示例代码都是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);

但它具有相同的效果(期望从未被击中)

1 个答案:

答案 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)

最后,以便失败的案件不仅仅是超时。