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).
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: '[email protected]', password: '123123'});
t.is(res.status, 200);
t.is(res.body.email, '[email protected]');
});