Проблемы с библиотекой mocha в JavaScript

Рейтинг: 2Ответов: 2Опубликовано: 11.02.2023

При создании пробного/шаблонного авто-теста столкнулся с проблемой которую не могу понять как решить (сами библиотеки установлены) Вот мой код:

const { describe, before, after, beforeEach, afterEach, it } = require('mocha');
const puppeteer = require('puppeteer');
const { expect } = require('chai');

describe('Test Suite', () => {
  let browser;
  let page;

  before(async () => {
    // Запустить браузер перед началом всех тестов
    browser = await puppeteer.launch({ headless: false });
  });

  after(async () => {
    // Закрыть браузер после выполнения всех тестов
    await browser.close();
  });

  beforeEach(async () => {
    // Создать новую страницу перед каждым тестом
    page = await browser.newPage();
  });

  afterEach(async () => {
    // Закрыть страницу после каждого теста
    await page.close();
  });

  it('should display "Google" in the title', async () => {
    // Перейти на сайт Google
    await page.goto('https://www.google.com/');

    // Проверить, что заголовок страницы содержит "Google"
    const title = await page.title();
    expect(title).to.include('Google');
  });
});

А ошибка которую мне выдаёт выглядит так:

$ node test4.js
C:\cygwin64\home\Mio\node_modules\mocha\lib\mocha.js:111
  return (currentContext.describe || currentContext.suite).apply(this, args);
                         ^

TypeError: Cannot read properties of undefined (reading 'describe')
    at exports.describe (C:\cygwin64\home\Mio\node_modules\mocha\lib\mocha.js:111:26)
    at Object.<anonymous> (C:\cygwin64\home\Mio\test4.js:5:1)
    at Module._compile (node:internal/modules/cjs/loader:1246:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1300:10)
    at Module.load (node:internal/modules/cjs/loader:1103:32)
    at Module._load (node:internal/modules/cjs/loader:942:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:83:12)
    at node:internal/main/run_main_module:23:47

Node.js v19.5.0

При запуске через mocha test4.js появляется другая ошибка:

$ mocha test4.js

TypeError: Cannot read properties of undefined (reading 'describe')
    at exports.describe (C:\cygwin64\home\Mio\node_modules\mocha\lib\mocha.js:111:26)
    at Object.<anonymous> (C:\cygwin64\home\Mio\test4.js:5:1)
    at Module._compile (node:internal/modules/cjs/loader:1246:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1300:10)
    at Module.load (node:internal/modules/cjs/loader:1103:32)
    at Module._load (node:internal/modules/cjs/loader:942:12)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:168:29)
    at ModuleJob.run (node:internal/modules/esm/module_job:193:25)

Ответы

▲ 1Принят

нужно заменить const { describe, before, after, beforeEach, afterEach, it } = require('mocha');

на

const Mocha = require('mocha'); 
const { describe, before, after, beforeEach, afterEach, it } = Mocha;
▲ 0

Я нашёл решение всё было проще чем я думал, но я не уверен, что понимаю как это работает...

const puppeteer = require('puppeteer');
const { expect } = require('chai');

describe('Test Suite', () => {
  let browser;
  let page;

  before(async function () {
    // Запустить браузер перед началом всех тестов
    this.timeout(5000);
    browser = await puppeteer.launch({ headless: false });
  });

  after(async function () {
    // Закрыть браузер после выполнения всех тестов
    await browser.close();
  });

  beforeEach(async function () {
    // Создать новую страницу перед каждым тестом
    page = await browser.newPage();
  });

  afterEach(async function () {
    // Закрыть страницу после каждого теста
    if (page) {
      await page.close();
    }
  });

  it('should display "Google" in the title', async function () {
    // Перейти на сайт Google
    await page.goto('https://www.google.com/');

    // Проверить, что заголовок страницы содержит "Google"
    const title = await page.title();
    expect(title).to.include('Google');
  });
});

Оказалось нужно было просто убрать прямое импортирование библиотеки Mocha

const Mocha = require('mocha');
const { describe, before, after, beforeEach, afterEach, it } = Mocha;

я удалил эту часть кода и всё заработало как-то