Test di endpoint

August 22, 2021 · View on GitHub


Nota del traduttore

Questa è la traduzione del file endpoint-testing.md. Qui c'è il link dove si confrontano le differenze tra commit di riferimento di questa traduzione e l'ultimo commit di AVA sul branch master (Se si clicca sul link, e non si vede il file endpoint-testing.md nella lista dei file modificati, questa traduzione è aggiornata).


Test di endpoint

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

AVA non ha un metodo nativo per il test di endpoint, ma puoi utilizzare un'altra libreria si asserzione per questo. In questo esempio utilizzeremo supertest.

Poichè i test saranno eseguiti in concorrenza, è meglio creare una nuova instanza del server per ciascun file di test, poichè se utilizzassimo sempre la stessa istanza, questa potrebbe cambiare il suo stato tra un test e l'altro. Questo si può fare utilizzando test.beforeEach e t.context, o semplicemente con una funzione factory:

function makeApp() {
	const app = express();
	app.post('/signup', signupHandler);
	return app;
}

Poi, iniettiamo l'istanza server in supertest. L'unica particolarità da tenere a mente è quella di usare una Promise o async/await invece del metodo end di supertest:

test('signup:Success', async t => {
	t.plan(2);

	const res = await request(makeApp())
		.post('/signup')
		.send({email: 'ava@rocks.com', password: '123123'});

	t.is(res.status, 200);
	t.is(res.body.email, 'ava@rocks.com');
});