Перезагрузка / сброс модулей после настройки - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь избежать использования global объекта, потому что я хочу использовать strict mode, поэтому я пытаюсь использовать глобальную стратегию модуля:

Browser.js

'use strict';

module.exports = {
    instance: null
};

Я использую Puppeteer, поэтому настраиваю подходящую среду ( пример )

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,
    });
}

Моя цель - иметь только один экземпляр браузера, к которому будет легко получить доступ.

...