supertest-as-promised中文文档|supertest-as-promised js中文教程|解析
supertest-as-promised
SuperTest as Promised使用一种方法增强 SuperTestthen
。
而不是在测试中的回调上分层回调:
;
像承诺的那样链接您的请求:
return ;
用法
SuperTest如许操作就像正常SuperTest,不同之处在于由返回的对象.get
,.post
等是适当的thenable:
var express = request = ; var app = ; ;
如果您使用 promise-friendly 测试运行器,您可以只request
从测试用例中返回您的链,而不是搞乱回调:
;
代理商
如果您使用 SuperTest 代理来保存 cookie,那么这些也可以:
var agent = ; agent
承诺的善良
首先,只公开then
和catch
方法。但是一旦你打过电话.then
或.catch
一次,你就会得到一个适当的Bluebird承诺,支持所有承诺的善良:
// I'm a real promise now!
有关可用的所有内容,请参阅Bluebird API。
您可能会发现使用以下toPromise
方法直接转换为 Promise 更简洁:
// I'm a real promise now!
Promise
BYOP:自带 您可以提供自己的承诺库,以便返回的承诺有您选择的方便方法。
只需使用符合 ES6 的Promise
构造函数调用 SuperTest as Promised 模块,您就会得到一个配置为返回自定义承诺的新模块。要交换when.js,例如:
var when = request; request = whenPromise; // I'm a when.js promise! (instanceof when.Promise == true) request = ; // I'm back to the default Bluebird promise!
调试
假设你的时髦测试
;
突然开始失败并出现“400 Bad Request”错误。如果您可以打印出响应正文以查看服务器是否提到了您的测试特别不好的地方,那肯定会很方便。链上 a
.catch
并检查err.response
:
;
安装
节点
$ npm install supertest supertest-as-promised
SuperTest as Promised 列出supertest
作为
对等依赖项,因此它会将您要求的任何版本的 SuperTest 包装在您自己的package.json
.
在早期版本的 NPM 中,如果没有将 SuperTest 作为依赖项列出,您将获得最新版本。在 NPM 3 中,未能将 SuperTest 列为依赖项将生成警告并且不会安装 SuperTest。
请注意,SuperTest as Promised 是一个行为良好的公民,不会直接对 SuperTest 进行猴子补丁:
// I return thenables!var request = ; // I'm lame and force you to use callbacksvar request = ;
版本
我们遵循semver:主要版本号将随着任何重大更改而升级。下面列出了每个主要版本中的重大更改。请查阅
变更日志以获取每个版本中有意义的新功能列表;请查阅提交日志以获取完整列表。
4.0 中的重大变化
- 在
.catch
处理程序中,err.response
现在被标记为不可枚举。
3.0 中的重大变化
- Bluebird已升级到 3.3.1 版本。
2.0 中的重大变化
- Bluebird已升级到 2.9.24 版本。