将函数中的两个参数添加到“then”量角器中

时间:2015-01-14 15:13:25

标签: javascript angularjs unit-testing protractor end-to-end

很明显。我有一个带有一些链接的数组,我想构建一个循环来尝试所有这些,但问题是链接总是3.这意味着它读取了我的数组中的最后一个数字。为什么?我该如何解决?

var categories = ['1','2','3'];
for( var i = 0; i < categories.length; i++ ) {
    var link = '/'+categories[i];
    browser.get(link);
    browser.sleep(2000);
    browser.driver.getCurrentUrl().then( function(url) {
        expect(url).toMatch(link);
    });
}

我有div列表,我想从他们那里随机读取信息。所以我做了以下

chosenOffer         = Math.floor( (Math.random() * count ) + 1);
offer               = element.all( by.className('offer')).get( chosenOffer );

但它始终显示错误消息selectedOffer object ...

1 个答案:

答案 0 :(得分:3)

这是一个经典的闭包问题,详见:

在您的情况下,让expect()解决承诺:

var categories = ['1','2','3'];

for (var i = 0; i < categories.length; i++) {
    var link = '/' + categories[i];
    browser.get(link);
    browser.sleep(2000);

    expect(browser.driver.getCurrentUrl()).toMatch(link);
}