2016-10-27 2 views
0

У меня есть простая проблема, у меня около 5 тестов, чтобы быть частью одной группы, одна из которых я заставляю их терпеть неудачу, но я не могу выйти из состояния сбоя:Mocha and NightmareJS- continue test

.goto(url) 
.wait('#element') 
.evaluate(fnc...) 
wait('#newelement') 
.... 
evaluate(function(){ 
return document.querySlector('#myid').innerText 
}) 
.then(function(result) { 
result.should.equal('1');// I know I am expecting 2 
done(); 
}) 
// will never be executed. 
.then..... 

// Приводится следующее сообщение. Ошибка: превышен тайм-аут 15000 мс. Убедитесь, что в этом тесте вызывается обратный вызов done().

Это было бы нормально, однако есть другие тесты, которые мне нужно сделать после того, как этот провалился, но я не могу продолжать работать или иметь элегантный способ сообщить об ошибке, не затрагивая остальных.

ответ

1

Если вы хотите, чтобы тест на провал вы можете вызвать done передавая ошибку в качестве аргумента:

done(new Error('this is my error message')) 

Так что в вашем случае, что-то вроде этого:

.goto(url) 
.wait('#element') 
.evaluate(fnc...) 
wait('#newelement') 
.... 
evaluate(function(){ 
return document.querySlector('#myid').innerText 
}) 
.then(function(result) { 
done(new Error('Please test, fail because I want you to.')); 
}) 
// will never be executed. 
.then..... 

Кроме того, в качестве примечание стороны, ваш исходный код может не работать, из-за нескольких вызовов на evaluate на тот же цепочный вызов, см. this ответ для получения более подробной информации.