1

これは機能します

it('should create a report for index: ', function() {
    var dataLength = window.test.parameters.length;
    for (var i = 0; i < dataLength; i++){
        var parameterObject = window.test.parameters[i];
        var propNumber = parameterObject.propertyNumber;
        element(":contains('" + propNumber + "')").click();
        element(":button('View')").click();
        expect(element('div *:contains(' + reportName + ')').count()).toEqual(4);
    }
});

これはしません

var dataLength = window.test.parameters.length;
for (var i = 0; i < dataLength; i++){
    it('should create a report for index: ', function() {
        var parameterObject = window.test.parameters[i];
        var propNumber = parameterObject.propertyNumber;
        element(":contains('" + propNumber + "')").click();
        element(":button('View')").click();
        expect(element('div *:contains(' + reportName + ')').count()).toEqual(4);
    });
};

私の意図は、このテストをパラメータ化して、毎回異なるパラメータの組み合わせで何度も実行することです。var と 'use strict' を削除しようとしました。私がグローバルであることを確認します。「describe」関数の外で i を宣言しようとしました。これにはコツがありますか?

4

1 に答える 1

4

it非同期である可能性があるため、レキシカルスコープを試してください。

var dataLength = window.test.parameters.length;
for (var i = 0; i < dataLength; i++){
    it('should create a report for index: ', function(i) {
        return function () {
            var parameterObject = window.test.parameters[i];
            var propNumber = parameterObject.propertyNumber;
            element(":contains('" + propNumber + "')").click();
            element(":button('View')").click();
            expect(element('div *:contains(' + reportName + ')').count()).toEqual(4);
        };
    }(i));
};
于 2013-05-11T16:08:49.187 に答える