Ich bin ziemlich neu in Chai, damit ich immer noch in den Griff zu bekommen bin.Chai - erwarte Funktion, um Fehler zu werfen
Ich habe eine Funktion geschrieben, die eine API-Antwort überprüft und entweder die richtige Nachricht zurückgibt oder einen Fehler auslöst.
networkDataHelper.prototype.formatPostcodeStatus = function(postcodeStatus) {
if (postcodeStatus.hasOwnProperty("errorCode")) {
//errorCode should always be "INVALID_POSTCODE"
throw Error(postcodeStatus.errorCode);
}
if (postcodeStatus.hasOwnProperty("lori")) {
return "There appears to be a problem in your area. " + postcodeStatus.lori.message;
}
else if (postcodeStatus.maintenance !== null) {
return postcodeStatus.maintenance.bodytext;
}
else {
return "There are currently no outages in your area.";
}
};
Ich habe es geschafft, Tests für das Messaging zu schreiben, jedoch habe ich mit dem Fehlertest zu kämpfen. Hier ist, was ich bisher geschrieben habe:
var networkDataHelper = require('../network_data_helper.js');
describe('networkDataHelper', function() {
var subject = new networkDataHelper();
var postcode;
describe('#formatPostcodeStatus', function() {
var status = {
"locationValue":"SL66DY",
"error":false,
"maintenance":null,
};
context('a request with an incorrect postcode', function() {
it('throws an error', function() {
status.errorCode = "INVALID_POSTCODE";
expect(subject.formatPostcodeStatus(status)).to.throw(Error);
});
});
});
});
Wenn ich den Test oben laufen, bekomme ich folgende Fehlermeldung:
1) networkDataHelper #formatPostcodeStatus a request with an incorrect postcode throws an error: Error: INVALID_POSTCODE
Es scheint, wie der Fehler, die ausgelöst wird, verursacht den Test zu versagen, aber ich bin mir nicht sicher. Hat jemand irgendwelche Ideen?
Natürlich! Alles funktioniert wie erwartet. Vielen Dank für die informative Antwort und das Code-Snippet. Ich verstehe, warum das Problem aufgetreten ist und Ihre Lösung einwandfrei funktioniert. – tombraider