设置后模块重新加载/重置

时间:2018-05-08 11:19:40

标签: node.js jestjs puppeteer

我试图避免使用global对象,因为我想使用strict mode所以我尝试使用全局模块策略:

Browser.js

'use strict';

module.exports = {
    instance: null
};

我使用的是Puppeteer,所以我设置了一个合适的环境(example

setup.js (可以在示例链接上找到完整的设置代码):

const Browser = require("../Browser");

module.exports = async function () {
    const browser = await puppeteer.launch();
    // store the browser instance so we can teardown it later
    Browser.instance = browser;
};

但是,当我进入测试时,浏览器模块实例再次设置为null,就像模块重新加载一样,即:。

index.test.js

const Browser = require('../Browser');

let page;

beforeAll(async function() {
    page = await Browser.instance.newPage(); // Browser.instance = null
});

此外,在测试实际启动之前运行的其他安装文件中,浏览器按预期运行实例:

PuppeteerEnvironment.js

const Browser = require("../Browser"); 

async setup() {
    await super.setup();
    // get the wsEndpoint
    const wsEndpoint = fs.readFileSync(path.join(DIR, 'wsEndpoint'), 'utf8');
    if (!wsEndpoint) {
        throw new Error('wsEndpoint not found');
    }

    console.log(Browser.instance); // print the Browser object as expected
    // connect to puppeteer
    await puppeteer.connect({
        browserWSEndpoint: wsEndpoint,
    });
}

我的目标是只有一个易于访问的浏览器实例。

0 个答案:

没有答案