Mocha не вызывает метод before, вызывая отслеживание стека в строке, превосходящее несколько непроверенных тестов - PullRequest
1 голос
/ 15 мая 2019

В строке 261 происходит трассировка стека, ошибка, которая не возникла бы, если бы метод 'before' вызывался до всех тестов.

Я попытался реструктурировать тесты, используя async и await, а также попытался отладить тестовые случаи, чтобы понять, почему метод before не вызывается. Я прочитал и перечитал документацию по мокко. Я недоволен тем, как решить эту проблему.

test.js:

    tables
        .create({ <-- line 261.
          golden_white: {
            schema: {
              id: "int auto_increment primary key",
              first_name: "varchar(20) not null",
              last_name: "varchar(20) not null"
            }
          }
        })

Фрагмент кода, содержащий строку, которая генерирует трассировку стека.

test.js - перед методом:


  let docker = new Docker({ socketPath: "/var/run/docker.sock" });
  let container = null;
  let tables = null;
  const databaseName = "goldpresi_tablesTest_database";

  before(function(done) {
    docker.container
      .create({
        Image: "mariadb:latest",
        Env: ["MYSQL_ROOT_PASSWORD=passwd"]
      })
      .catch(err => done(err))
      .then(c => {
        container = c;
      })
      .then(c => c.status())
      .then(status => {
        pool = mysql2.createPool({
          username: "root",
          password: "password",
          host: `${status.data.NetworkSettings.IPAddress}`
        });

        pool
          .query(`create database ${databaseName}`)
          .then(() => pool.query(`use database ${databaseName}`))
          .then(() => {
            tables = new Tables(pool);
            done()})
          .catch(err => done(err));
      });
  });

Трассировка стека:

/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/node_modules/yargs/yargs.js:1163
      else throw err
           ^

TypeError: Cannot read property 'create' of null
    at Suite.<anonymous> (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/backend/test/build/test.js:264:10)
    at Object.create (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/interfaces/common.js:140:19)
    at context.describe.context.context (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/interfaces/bdd.js:42:27)
    at Suite.<anonymous> (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/backend/test/build/test.js:261:5)
    at Object.create (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/interfaces/common.js:140:19)
    at context.describe.context.context (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/interfaces/bdd.js:42:27)
    at Suite.<anonymous> (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/backend/test/build/test.js:260:3)
    at Object.create (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/interfaces/common.js:140:19)
    at context.describe.context.context (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/interfaces/bdd.js:42:27)
    at Object.<anonymous> (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/backend/test/build/test.js:10:1)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at /home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/mocha.js:330:36
    at Array.forEach (<anonymous>)
    at Mocha.loadFiles (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/mocha.js:327:14)
    at Mocha.run (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/mocha.js:804:10)
    at Object.exports.singleRun (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/cli/run-helpers.js:207:16)
    at exports.runMocha (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/cli/run-helpers.js:300:13)
    at Object.exports.handler.argv [as handler] (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/cli/run.js:296:3)
    at Object.runCommand (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/node_modules/yargs/lib/command.js:242:26)
    at Object.parseArgs [as _parseArgs] (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/node_modules/yargs/yargs.js:1104:24)
    at Object.parse (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/node_modules/yargs/yargs.js:566:25)
    at Object.exports.main (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/lib/cli/cli.js:63:6)
    at Object.<anonymous> (/home/duke/Documents/Development/Web Development/higher_and_further_courses_web_app/node_modules/mocha/bin/_mocha:10:23)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:266:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:596:3)

Test.js: https://github.com/TheMasteredPanda/Goldpresi-Website-Application/blob/master/backend/test/build/test.js Tables.js: https://github.com/TheMasteredPanda/Goldpresi-Website-Application/blob/master/backend/src/scripts/dataManager/tables.js

Я ожидал, что будет вызван метод before, расположенный в родительском «description», а затем все остальные тестовые примеры будут вызваны процедурно, а ожидаемый текст будет напечатан в консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...