Ich teste eine a-Funktion, die als Teil eines Versprechens zurückgegeben wird. Ich verwende chai-as-promised.Testen einer Funktion, die von einem Versprechen zurückgegeben wurde - Überprüfen auf Fehler
Ich kann testen, dass die Funktion funktioniert, aber ich kann nicht testen, dass es Fehler richtig wirft.
Die Funktion Ich versuche, zu testen, viel Code zu dem Versprechen im Zusammenhang Weglassen:
// function that we're trying to test
submitTest = (options) => {
// missingParam is defined elsewhere. It works - the error is thrown if screenshot not passed
if (missingParam(options.screenShot)) throw new Error('Missing parameter');
return {};
}
Meine Tests:
describe('SpectreClient()', function() {
let client;
before(() => client = SpectreClient('foo', 'bar', testEndpoint));
// the client returns a function, submitTest(), as a part of a promise
/*
omitting tests related to the client
*/
describe('submitTest()', function() {
let screenShot;
before(() => {
screenShot = fs.createReadStream(path.join(__dirname, '/support/test-card.png'));
});
// this test works - it passes as expected
it('should return an object',() => {
const submitTest = client.then((response) => {
return response.submitTest({ screenShot });
});
return submitTest.should.eventually.to.be.a('object');
});
// this test does not work - the error is thrown before the test is evaluated
it('it throws an error if not passed a screenshot',() => {
const submitTest = client.then((response) => {
return response.submitTest({});
});
return submitTest.should.eventually.throw(Error, /Missing parameter/);
});
});
})
Der Ausgang des Test -
// console output
1 failing
1) SpectreClient() submitTest() it throws an error if not passed a screenshot:
Error: Missing parameter
Wie kann ich testen, dass der Fehler korrekt ausgelöst wird? Ich bin mir nicht sicher, ob es sich um ein Mokka-Problem handelt oder um ein Versprechen oder eine Chai-as-Versprochen-Sache. Hilfe sehr geschätzt.