我使用卡斯帕儀模塊,我有這樣的結構:什麼時候應該在CasperJS中調用test.done()?
casper.start();
...(various then() and wait() calls)
casper.then(function(){
test.done();
});
casper.run();
做這樣的說法似乎正常工作(除間歇計時器的問題,我一直在試圖解決)。
如果我改變以下,這是shown in the casper docs,並且我認爲是基本相同以上:
casper.start();
...(various then() and wait() calls)
casper.run(function(){
test.done();
});
然後我得到「警告看起來你沒有運行任何測試。」我意識到這是因爲我沒有任何assert()
電話呢!我添加了一個無端的斷言,並且警告消失了,現在我開始獲得有多少測試運行的報告等等。(間歇性計時器問題依然存在,所以必須是其他東西。)
但它讓我意識到我應該以第二種方式來做這件事,那顯然是有區別的。
有人可以解釋什麼區別,以及爲什麼第一個不能正常工作?我希望能夠更深入地瞭解CasperJS測試的工作原理!
你好,你有沒有找到任何解決辦法?我有同樣的問題。謝謝。 – DzeryCZ
@DzeryCZ我認爲我的問題的後半部分是解決方案(即'test.done()'必須在'run()'函數中完成,*和*您必須至少定義了一個斷言)。我仍然不明白的是爲什麼它很重要:-) –
感謝您的解決方案。我可以想象這個原因與這些回調被調用的順序有關。可能有一些清理的事情,比如在casper.run結束之前關閉所有的網頁,然後執行其給定的回調,否則這些回調會被調用失序。 – encrest