Javascript - Стажер - Windows не определен

Я запускаю свой стажерский тест, используя следующий код

node node_modules/intern/runner.js config=tests/intern

на моей локальной машине. Приложение использует Dojo. В основном я пытаюсь переопределить функцию window.alert, так как один из моих тестов не работает из-за неожиданного предупреждения.

window.alert = function(msg) {
    //override alert function
    //...
}

Я попытался поместить это в свой стажерский тест и получил ошибку. После некоторого поиска я узнал, что объект окна недоступен в среде узла. Где я могу отменить предупреждение? intern file выглядит так

define(['intern/lib/args'], function(args) {
    var DEFAULT_PORT = "8080";

    var urlInfo = {
        PORT: args.port || DEFAULT_PORT,
        BASE_URL : "http://localhost:".concat(args.port || DEFAULT_PORT, "/webtest"),
    };

    var config = {
        proxyPort: 9000,

        proxyUrl: 'http://localhost:9000',

        capabilities: {
            'selenium-version': '2.45.0',
        },

        ...
        ...
    };

    return config;
});

Пример файла для внутреннего тестирования

define([
    'intern!object',
    'intern/chai!assert',
    'intern/dojo/node!leadfoot/helpers/pollUntil',
    'intern',
    'intern/dojo/node!fs'
], function(registerSuite, assert, Pages, intern, fs) {

    registerSuite ({
        name: 'Tests',

        setup: function() {
            window.alert = function(msg){
                console.log("Unexpected Alert: "+msg);
            }
            return this.remote.get(require.toUrl( intern.config.functionalInfo.BASE_URL)).maximizeWindow();
        },

        beforeEach: function() {
            return    
        },

        afterEach: function() {
            return 
        },

        'Test1' : function() {
             this.timeout = 600000;
            return this.remote
              .setFindTimeout(5000)
              ....
           },
}

person 8785krs    schedule 05.10.2015    source источник


Ответы (1)


window не существует в узле, вы должны переопределить его alert из кода, который выполняется в браузере (тестируемый код), а не на самом узле. Я бы сделал это в коде установки для каждого теста, который его использует.

person Juan Mendes    schedule 05.10.2015
comment
когда вы говорите код, который работает в браузере, вы имеете в виду сам стажерский тест? - person 8785krs; 05.10.2015
comment
что, если бы я использовал grunt для запуска теста, в этом случае он все равно не работал бы? - person 8785krs; 05.10.2015
comment
@ 8785krs, grunt работает на узле, поэтому объект окна все равно не будет определен - person Matt R; 05.10.2015
comment
@Хуан Мендес. под кодом настройки вы имеете в виду функцию настройки во внутреннем тесте? Я пытался вставить его туда, но все равно выдает ту же ошибку - person 8785krs; 06.10.2015
comment
В функциональных тестах все внутри самого тестового модуля, за исключением функций, переданных в execute или executeAsync, по-прежнему выполняется в Node.js. - person Ken Franqueiro; 08.10.2015