32 lines (23 sloc) 1.67 KB

Endpoint testing

Translations: Español, Français, Italiano, 日本語, Português, Русский, 简体中文

AVA doesn't have a builtin method for testing endpoints, but you can use any assertion library with it. Let's use supertest.

Since tests run concurrently, it's best to create a fresh server instance for each test, because if we referenced the same instance, it could be mutated between tests. This can be accomplished with a test.beforeEach and t.context, or with simply a factory function:

function makeApp() {
	const app = express();
	app.use(bodyParser.json());'/signup', signupHandler);
	return app;

Next, just inject your server instance into supertest. The only gotcha is to use a promise or async/await syntax instead of the supertest end method:

test('signup:Success', async t => {

	const res = await request(makeApp())
		.send({email: '', password: '123123'});, 200);, '');