Jasmine zapewnia sposób globalny fail()
, który może być używany wewnątrz bloków wyspecjalizoway it()
a także pozwala wykorzystać niestandardowy komunikat o błędzie:
it('should finish successfully', function (done) {
MyService.getNumber()
.success(function (number) {
expect(number).toBe(2);
done();
})
.fail(function (err) {
fail('Unwanted code branch');
});
});
ta jest wbudowana funkcja Jasmine i działa dobrze wszędzie w porównaniu z metoda "błędu", o której wspomniałem poniżej.
Przed aktualizacją:
można rzucić błąd z tego kodu oddziału, natychmiast nie spec i będziesz w stanie dostarczyć niestandardowy komunikat o błędzie:
it('should finish successfully', function (done) {
MyService.getNumber()
.success(function (number) {
expect(number).toBe(2);
done();
})
.fail(function (err) {
throw new Error('Unwanted code branch');
});
});
Ale ty powinieneś być ostrożny, jeśli chcesz rzucić błąd od obsługi sukcesu Promise then()
, ponieważ błąd zostanie tam połknięty i nigdy nie pojawi się. Powinieneś także zdawać sobie sprawę z możliwych procedur obsługi błędów w aplikacji, które mogą złapać ten błąd w aplikacji, w wyniku czego nie będzie można zdać testu.
Istnieje również "done.fail (" message ")'. – TrueWill
Dla tych, którzy utknęli na starszej wersji Jasmine, metoda "fail" nie jest dostępna w wersji 1.3, ale może być skutecznie polyfilled przez "throw new Error (message)". Skuteczność może zależeć od twojego biegacza testowego - również rozważ coś w stylu "oczekiwać (" [przyczyna niepowodzenia] ") toBeNull()'. – ryanwebjackson