2013-07-26 36 views
0

我想用Behat來測試我的angular.js應用程序。但是,我遇到的問題是,當你去一個路線,並希望點擊一個鏈接Behat不知道什麼時候模板呈現,所以有時它點擊,而內容不可用。任何有使用Behat測試angular.js應用程序的經驗的人?如何知道angular.js是否爲當前路線渲染模板

或者,有沒有人知道你可以如何檢查在JavaScript中,如果當前路線的模板已完成渲染?以及如何檢查angular.js是否在頁面加載時自動引導應用程序?

我知道angular.js有ngScenario,但我想貝哈特使用,因爲:

  • 小黃瓜語言,它是人類可讀
  • 我們的後端是用Symfony的,所以我們可以使用相同的框架同時測試

親切的問候,

大安

回答

0

貂api有一個方法wait它允許你暫停執行你的PHP上下文,直到你的javascript應用程序完成處理'某事'。有一個在文檔一個簡單的例子:http://mink.behat.org/#basic-browser-interaction

$session->wait(5000, 
    "$('.suggestions-results').children().length > 0" 
); 

在提供的例子中,PHP上下文將被暫停長達5秒鐘,直到建議結果列表中已被填充。您需要確定等效的JavaScript表達式,以確定路線何時完成呈現。

我們在過去使用jQuery表達式時遇到了一些麻煩,並且已經恢復到原生瀏覽器方法,如getElementById

您還需要使用能夠執行javascript的水貂驅動程序。我們在命令行上使用ZombieDriver。有幾種可能更適合你的選擇。

http://mink.behat.org/#different-browsers-drivers

+0

恰好碰到了類似的問題,它被認爲等待是不是一個真正的好的解決方案,因爲它始終是固定的,當呈現頁面時,你永遠不知道。 http://gediminasm.org/post/behat-sleep-alternative中的解決方案似乎好得多,需要了解如何將其納入所有Behat規則 – rajasaur