1
假設有一個按鈕觸發某些需要一段時間的數據處理。在處理過程中,我想通過顯示諸如「正在工作...」,「非常努力工作......」,「幾乎在那裏......」等消息來告訴用戶我們在哪裏。確保所有這些消息將在處理完成之前一個接一個出現。任務是用量角器檢查這個場景。使用量角器測試異步更新序列?
所以,這裏是一個例子代碼:
<div ng-controller="AppController">
<p>{{message}}</p>
<button type="button" ng-click="go()">Go!</button>
</div>
...
<script>
angular.module('app', [])
.controller("AppController", function($scope, $timeout) {
$scope.message = "";
$scope.go = function() {
$scope.message = "Working...";
$timeout(function() {
$scope.message = "Working very hard...";
$timeout(function() {
$scope.message = "Almost there...";
$timeout(function() {
$scope.message = "Done!!!";
}, 1000);
}, 1000);
}, 1000);
};
});
</script>
我明白這種行爲是比較容易與普通的單元測試(茉莉花)進行測試,但讓我們假裝這些$timeout
電話是通過一個由後臺發送實際異步更新WebSocket的。
是否有可能以某種方式用量角器測試這個更新序列?
的直接的方法是這樣的:
expect(element(by.binding('message')).getText()).toEqual('Working...');
expect(element(by.binding('message')).getText()).toEqual('Working very hard...');
不起作用。
3210這是可以理解的,我認爲量角器只是等待所有未決的東西在移動之前完成:在我的情況與測試失敗。
我能想到的一種方法是,顯式輪詢DOM以監視元素內容何時發生更改。這我想避免。有更好的選擇嗎?
textToBePresentInElement不工作我的情況。請參閱http://stackoverflow.com/questions/41829169/protractor-wait-command-is-not-able-to-wait-for-the-bootstarp-modal-to-appear –