量角器中的断言未获得更新值

时间:2015-07-30 15:22:08

标签: angularjs protractor

我正在尝试为我的角度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'

请告诉我哪里出错了。

1 个答案:

答案 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);
    });
});