Ich schreibe einen Komponententest, um mein Postgres-Schema zu testen. Ich benutze Knoten-Pg, Mocha, Sinon und Chai.Der Test wird nicht beim Beenden fehlgeschlagen.
Dies funktioniert - der Test bestanden ohne Probleme:
describe('When adding a user',()=> {
it('should reject since email is used somewhere else', (done)=> {
pool.query(`INSERT INTO users(email, id, token)
VALUES($1, $2, $3)`, ['[email protected]', '12346', 'fooToken'])
.then((result)=> {
console.log('nothing in here runs, you will not see this');
done()
})
.catch((result) => {
result.constraint.should.have.string('email_already_exists');
done();
})
})
});
aber sicherzustellen, dass ich nicht falsch positiv bin immer, ändere ich die assert result.constraint.should.not.have.string('email_already_exists');
um absichtlich den Test zu machen scheitern.
Anstelle des Tests fehlgeschlagen, bekomme ich Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
.
Was bekomme ich das?
Wenn Sie promisebasierten Code testen, sollten Sie in Betracht ziehen, Mochas integrierte [Versprechen Unterstützung] (https://mochajs.org/#working-with-promises) zu verwenden. Viel einfacher, solche Probleme zu verhindern. – robertklep
@robertklep Wie könnte diese Versprechensunterstützung beim Testen von 2 Abrufen im Knoten verwendet werden? http://stackoverflow.com/questions/43690868/how-to-assert-stubbed-fetch-more-than-once/43806205#43806205 – dman
Ein gutes Beispiel: https://coderwall.com/p/axugwa/cleaning- the-database-in-between-mocha-tests-mit-pg-promise –