2013-07-15 2 views
1

В моих тестах NodeUnit, у меня есть такой кусок кода:doesNotThrow в Node.js возвращает неопределенное

exports['aTest'] = function(test){ 
... 
var functionResult = test.doesNotThrow(aFunction(aParam)); 
... 
} 

Но functionResult не определено после вызова doesNotThrow (...) Почему test.doesNotThrow() не возвращает результат вызова функции? Это было бы довольно элегантно.

ответ

0

Он ничего не возвращает, как показан в source code, это происходит потому, что nodeunit полагается на AssertionError, чтобы определить, является ли набор успешно или нет, как вы могли видеть here

Почему вы хотите, чтобы вернуть то, какую возвращаемую стоимость вы ожидаете?
Целью библиотеки является проверка ваших утверждений. Он не должен возвращать значение, поскольку это означало бы предоставление вам информации, чтобы что-то сделать с этим значением, вместо этого, когда вы получите сообщение об утверждении, вы получите сообщение консоли, в котором говорится, что ваши тесты были нарушены. Я считаю, что это хороший подход.

Ваша цель быть уведомленным, когда что-то брокер, полагаясь на библиотеку, чтобы рассказать вам, что сломало, а не вникать в детали, поэтому я считаю, что автор выбрал этот путь.

+0

Возврат undefined строго уступает возврату результата вызова doesNotThrow (...). – lOlive

+0

Это потому, что это модульное тестирование, вы проверяете, что функция не бросает, в другом тесте вы будете тестировать результат и посмотреть, соответствует ли он вашим ожиданиям. –

+0

Мне интересно, почему цепочки утверждений считаются плохой практикой. cf this post http://stackoverflow.com/questions/2430429/are-multiple-asserts-bad-in-a-unit-test-even-if-chaining – lOlive

Смежные вопросы