Sono confuso, quindi se uso SuperTest che a quanto pare ha una sua asserzione, non devo preoccuparmi di usare Chai? O quando richiedo Chai, Supertest lo sa e lo utilizza come meccanismo previsto?L'aspettativa di SuperTest contro Chai.expect
risposta
SuperTest estende l'oggetto request
di SuperAgent per includere una funzione expect
. Non funziona come l'asserzione expect
di Chai, ma può essere utilizzata per affermare lo stato e le intestazioni della risposta http e può essere combinata con Chai expect
.
request(app).
get('/').
expect(200). // request.expect, is status code 200?
expect('Content-Type', /json/). // request.expect, does content-type match regex /json/?
expect(function(res){ // request.expect, does this user-provided function throw?
// user-provided function can include Chai assertions
expect(res.body).to.exist;
expect(res.body).to.have.property('status');
}).
end(done);
thx. Basta chiedersi quale situazione vorrebbe in un test BDD affermare usando 'aspettarsi' di SuperTest e poi subito dopo usare un Chai 'expect'. Voglio dire una volta che ti aspetti qualcosa ed è vero, il tuo test BDD passa ... Non vedo proprio la necessità che Chai si aspetti quando testare le richieste/risposte di integrazione nel tuo BDD o altri test di integrazione ... – PositiveGuy
Sono confuso su quale sia la domanda? Vuoi capire il funzionamento interno dei framework di test e delle librerie di assertion? – Clarkie
Quando si utilizza SuperTest per fare una richiesta e si inizia a far valere l'uso di 'expect' presumo dal momento che ho definito mi aspetto tramite la libreria di asserzione Chai che quella è la libreria che sta usando. In altre parole, SuperTest non ha una propria libreria di asserzioni, giusto? Devi dirgli quale libreria impostando la variabile expect come fai in Mocha e poi SuperTest è in grado di usare questa variabile in qualche modo per aggiungerla alla fine della sua funzione richiesta chiamata – PositiveGuy
hmm, basta guardare nuovamente i documenti di SuperTest e Dice che sta usando la funzione 'expect' di SuperAgent perché assomiglia alle "asserzioni HTTP semplificate tramite super-agente". Ma poi dice anche che 'SuperTest funziona con qualsiasi framework di test, ecco un esempio senza usare alcun framework di test:' quindi sono confuso qui. – PositiveGuy