2016-10-27 8 views
0

私は簡単な問題に遭遇しています。私は約5つのテストが1つのグループに含まれています。そのうちの1つは失敗しますが、失敗状態を終了することはできません。モカとナイトメアJSテストを続ける

.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..... 

//次のメッセージがスローされます。 エラー:15000msのタイムアウトを超えました。このテストでdone()コールバックが呼び出されていることを確認してください。

これはOKですが、この後に行う必要がある他のテストがありますが、残りの部分に影響を与えずにエラーを報告するためのエレガントな方法はありません。

答えて

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の回答を参照してください。

関連する問題