在 nightwatch js 中使用 global.js

Working with global.js in nightwatch js

我正在 nightwatch 中编写一些测试,并且有一个 globals.js 文件,它实际上是在下面导出一个 js 对象。

var self = module.exports = {
    environment: undefined,
    beforeEach: function (browser, done) {
        browser.execute(function(data) {
            return window.navigator.userAgent;
        }, [], function(result) {
            self.environment = result.value;
            console.log("Run against: " + self.environment);
            done();
        });
        console.log('the new env is', self.environment);
    },
};

注意:console.log("Run against: " + self.environment); 打印我的 env 值,在这种情况下它不是未定义的。然而。每当我尝试从另一个 file/class 访问环境时。它 returns 默认未定义,尽管我之前更新过它。示例来自下面的测试。

module.exports = {
    tags: ['assetindex'],
    'visit': function(browser) {

        console.log('the environment is', browser.globals.environment);
        (/Chrome/.test(browser.globals.environment)) ?
            browser
                .page.assetindex().mobileVisit()
                .end()
        :
            browser
                .page.assetindex().desktopVisit()
                .end()
    }
};

browser.globals.environment 在这里总是返回 undefined,尽管我在 beforeEach 函数中更改了它。请问我如何实现这一目标?我做错了什么?

好像browser.globalsglobals.js的翻版。我会在 beforeEach 中用 browser.globals.environment 替换 self.environment :

module.exports = {
    environment: undefined,

    beforeEach: function (browser, done) {
        browser.execute(function(data) {
            return window.navigator.userAgent;
        }, [], function(result) {
            browser.globals.environment = result.value;
            console.log("Run against: " + browser.globals.environment);
            done();
        });
    }
};