Jak powinienem testować, z mocha i chai, że moja obietnica zawiodła?testowanie nieudanych obietnic z wbudowaną obsługą obietnicy mokki
Jestem zdezorientowany, bo początkowo myślałem, należy używać „mocha-as-obiecał”, ale że pakiet jest teraz przestarzała (używam mocha 2.1.0), z doradztwa prostu użyć obiecuj testy, które teraz są wbudowane w mokkę. zobaczyć: https://github.com/domenic/mocha-as-promised
Kolejny post zaleca rezygnacji z „Gotowe” argument do to() callback - nie bardzo rozumiem dlaczego, skoro moje zrozumienie, że przechodzącą w „Gotowe” parametrem była droga do sygnalizowania że test był testowany asynchronicznie. patrz: How do I properly test promises with mocha and chai?
W każdym razie próbowałem ograniczyć mój problem do kodu podanego poniżej - pomóż mi zmodyfikować to, aby przetestować, czy moja obietnica rzeczywiście zawodzi.
it.only("do something (negative test)", function (done) {
var Q = require('q');
function makePromise() {
var deferred = Q.defer();
deferred.reject(Error('fail'));
return deferred.promise;
};
makePromise()
.then(done, done);
});
Możesz "zwrócić' 'makePromise()' i usunąć 'done, done' part. –
Dodałbym dodatkową asercję, aby upewnić się, że nie trafiła ona w przypadek akceptacji. 'powrócić makePromise() .then (() => {// sprawa akceptacji, nie powinniśmy spodziewać się tutaj () nie ('wyjątek nie wydaje się być rzucony');.. } (e) => { // Przypadek awarii, powinniśmy tu dotrzeć, a komunikat powinien odpowiadać oczekiwać (e.message) .to.equal ('fail'); }); ' – gmetzker