Я использую Jasmine 2.3.1. Следующие спецификации результатов выполнения в методе Afterall не вызывается:Жасмин afterAll не вызывается, когда возникает ошибка
var http = require('http');
describe("simple server tests:", function() {
afterAll(function(done) {
console.log('after all');
});
it("throws an error because server is not running", function(done) {
http.get("http://127.0.0.1:8080", function(res) {
res.on('data', function(data) {
done();
});
});
});
});
Консоль показывает:
[23:25:24] Starting 'test'...
events.js:85
throw er; // Unhandled 'error' event
^
Error: connect ECONNREFUSED
at exports._errnoException (util.js:746:11)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)
Мое ожидание было бы, что Afterall называется, независимо от ошибки, брошенной в методе испытаний , Я действительно не хочу пытаться поймать мои тесты. Пожалуйста, дайте мне знать, если это проблема с Жасмин или мое использование Жасмина. Благодарю.
если сделано не называется, то я бы ожидать тайм-аут и метод Afterall быть вызванным. Проблема, я имею его, что любой тест может потерпеть неудачу с синтаксической ошибкой или неожиданной ошибкой. И в этих случаях afterall не называется. Я ожидал бы, что после этого будет вызван во всех случаях, даже когда будет выброшена ошибка. – planetjones
Он выходит из-за исключения из-за асинхронного поведения тестируемого устройства. Жасмин ловит исключения синхронизации, но не async, потому что они отсутствуют, если это область видимости. Вы можете попробовать даже 'setTimeout (function() {a = b;}, 500);' и получить 'ReferenceError' с выходом тестового набора. Ничего не улавливает это исключение, поэтому вся сюита идет вниз. Очевидно, что если сюита не работает, то «afterAll» не может быть вызван. Я должен быть [известной проблемой] (https://github.com/jasmine/jasmine/issues/529) –
Возможно, этот модуль может помочь вам - [jasmine-async-errors] (https: //www.npmjs. ком/пакет/жасмин Асинхр-ошибка). –