我想測試一個簡單的端到端流量 - 使用量角器創建一個新的帳戶。量角器E2E測試 - 異步Rest API調用
我有一個AngularJS應用程序包含一個創建賬戶頁面,用戶需要填寫一個簡單的表單並點擊提交。
點擊提交會觸發一個方法,該方法調用異步方法在我的服務器中創建帳戶。
當該函數返回時,用戶被定向到不同的頁面。
這裏是我的測試(creatAccount.spec.js
):
describe('Create Account Page Tests', function() {
it('createAccount success', function(){
browser.get('http://localhost:9001/#/createAccount');
element(by.model('user.organizationName')).sendKeys('Westeros');
element(by.model('user.firstName')).sendKeys('John');
element(by.model('user.lastName')).sendKeys('Snow');
element(by.model('user.email')).sendKeys('[email protected]');
element(by.model('user.password')).sendKeys('123');
element(by.model('confirmPassword')).sendKeys('123');
element(by.id('submitBtn')).click();
expect(browser.getCurrentUrl()).toEqual('http://localhost:9001/#/userManagement');
});
});
這裏是我的提交方式:
$scope.submit = function() {
$scope.submitted = true;
UserService.createAccount($scope.user)
.then(function success(){
$state.go('userManagement');
}, function failure(){
$log.error("something went wrong");
});
};
這裏是我的UserService.createAccount
方法:
function createAccount(user){
var deferred = $q.defer();
APIService.sendRequest(APIService.ACTION().createAccount, undefined, user)
.then(function success(res) {
deferred.resolve();
}, function failure(reason){
$log.debug('create account failed. reason: ', reason);
deferred.reject(reason);
});
return deferred.promise;
}
這裏是我的APIService.sendRequest
方法:
function sendRequest(action, params, data){
var defferd = $q.defer();
var request = $resource(action.url, {}, {send: {method: action.method, isArray: action.isArray ? action.isArray : false, withCredentials: true}});
if (!params){
params = {};
}
request.send(params, data, function(res) {
defferd.resolve(res);
}, function(error) {
defferd.reject(getErrorReponseListError(error));
});
return defferd.promise;
}
我的測試一直失敗,因爲頁面沒有定向到下一頁。在我看來,像測試不等待異步方法,甚至認爲它應該返回......
我試着打電話browser.waitForAngular()
或browser.wait(5000)
但沒有什麼幫助......
您應該使用'$ http'來使量角器能夠在執行getCurrentUrl之前等待正確的角度。否則,請嘗試使瀏覽器等待url改爲改爲:http://stackoverflow.com/questions/30891693/protractor-done-and-expect-why-do-we-need-wait/30893472#30893472 –