javascript - 如何使用 Jasmine 2.0 测试 ES6 Promise?

标签 javascript jasmine promise es6-promise

我有一个返回 ( probably shimmed) ES6 promise 的函数,我想编写一个 Jasmine 测试来检查它是否成功解析并且解析的值是否正确。我该怎么做?

这是我目前找到的方式,但至少很无聊:

describe("Promises", function() {
  it("should be tested", function(done) {
    var promise = functionThatReturnsAPromise();
    promise.then(function(result) {
      expect(result).toEqual("Hello World");
      done();
    }, function() {
      expect("promise").toBe("successfully resolved");
      done();
    });
  });
});

还有一个库叫做jasmine-as-promised这似乎很有帮助,但遗憾的是它在 Jasmine 2.0 中不起作用,因为它使用已被删除的 runs()

Jasmine 2.0 中是否已经开发出任何舒适的测试 promise 的解决方案?

最佳答案

这里的聚会有点晚了,但以防其他人发现这个问题(我也是)- 这是一个新的答案:使用我的 ' jasmine-es6-promise-matchers ' 成分。使用它,您上面的测试将如下所示:

var promise = functionThatReturnsAPromise();
expect(promise).toBeResolvedWith("Hello World");

它在 Bower 和 NPM 上可用(只需安装 jasmine-es6-promise-matchers)。

关于javascript - 如何使用 Jasmine 2.0 测试 ES6 Promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25342129/

相关文章:

typescript - 使用 Fetch 和 Promise 的 Angular 2 服务

javascript - 如何将 JavaScript fetch 包装在函数中 - 未处理的 promise 拒绝

javascript - 如何使用数据库中的坐标加载 Bing map ?

javascript - 部署时出现错误 firebase 函数 [Promises 必须得到适当处理]

javascript - 针对多个版本的 jQuery 运行 Jasmine 测试

javascript - 如何在 ElectronJS 中模拟 require

javascript - 将 then 的值保存在 Promise 外部的变量中

javascript - 停止功能未按预期工作。需要帮忙。 react

javascript - 在 Javascript 中围绕 Function() 创建沙箱

在 PhantomJS 中运行时,Jasmine 从不执行它