备注
这是 endpoint-testing.md 的简体中文翻译。这个链接 用来查看本翻译与 AVA 的 master 分支是否有差别(如果你没有看到endpoint-testing.md
发生变化,那就意味着这份翻译文档是最新的)。
翻译:Español, Français, Italiano, 日本語, Português, Русский, 简体中文
AVA 没有内嵌的方法可以来做端点测试,但你可以用其他断言库来做,让我们用 supertest-as-promised
来看看。
因为测试是并发执行的,所以最好是为每个测试建立一个新的服务器实例,如果所有测试都引用同一个实例,那实例可能会被不同的测试改变状态。这可以在test.beforeEach
和t.context
里完成,或者简单的工厂方法:
function makeApp() {
const app = express();
app.post('/signup', signupHandler);
return app;
}
然后,将你的服务器注入到测试超类中,主要的点是用 promise 或 async/await 语法来代替测试超类的end
方法:
test('signup:Success', async t => {
t.plan(2);
const res = await request(makeApp())
.post('/signup')
.send({email: '[email protected]', password: '123123'});
t.is(res.status, 200);
t.is(res.body.email, '[email protected]');
});