我正在尝试为我的角度js应用程序编写量角器测试。但我正面临一些问题。我的代码是这样的:
describe('Login test', function() {
var username = element(by.model('username'));
var password = element(by.model('password'));
var submitButton = element(by.id('submitbutton'));
var isUserValid = element(by.model('isUserValid'));
var message = element(by.model('message'));
beforeEach(function() {
browser.get('my url');
});
it('should validate user', function() {
username.sendKeys('xxxxx');
password.sendKeys('yyyy');
element(by.id('submitbutton')).click();
expect(message.getText()).toEqual('true');
expect(isUserValid).toEqual(true);
}); });
当我启动测试时,浏览器启动,我可以看到登录字段使用我在测试中传递的值填充,并且调用将转到部署在服务器上的restful webservice。但断言不满意。 在我的控制器代码中,我正在更新范围变量' isUserValid'为true($ scope.isUserValid = true;)和变量' message' to' true'($ scope.message =' true&#39 ;;)。但是在测试中,两个断言失败。第一个断言的错误消息显示''''正在比较' true'。第二个断言的错误消息显示将null与true进行比较。当我在控制台上打印这些值时,' isUserValid' “' message'显示为null显示为' false'
请告诉我哪里出错了。
答案 0 :(得分:1)
我认为您可能在登录后遇到重定向问题。尝试等待,直到您被重定向到目标网址,然后执行断言。
it('should validate user', function() {
username.sendKeys('xxxxx');
password.sendKeys('yyyy');
element(by.id('submitbutton')).click();
browser.driver.wait(function() {
return browser.driver.getCurrentUrl().then(function(url) {
return (/PART_OF_URL_WHEN_LOGGED_IN/).test(url);
});
}, 10000).then(function () {
expect(message.getText()).toEqual('true');
expect(isUserValid).toEqual(true);
});
});