Модульное тестирование Strapi - PullRequest
0 голосов
/ 14 июля 2020

Для модульного тестирования strapi (с использованием mysql в качестве базы данных) я следовал официальной документации, и когда я использую то же самое с npm запустить тест , я получаю такие ошибки, как показано ниже

my-project@0.1.0 тест D: \ Gerrit \ website_backend \ TE_MCA_DMSWEBV2 jest --forceExit --detectOpenHandles

● process.exit вызывается с "1"

  at Strapi.stop (node_modules/strapi/lib/Strapi.js:238:13)
  at Strapi.stopWithError (node_modules/strapi/lib/Strapi.js:224:17)
  at node_modules/strapi-connector-bookshelf/lib/mount-models.js:625:14

RUNS tests / app.test. js npm ОШИБКА! код ELIFECYCLE npm ERR! errno 1 npm ERR! my-project@0.1.0 тест: jest --forceExit --detectOpenHandles npm ERR! Статус выхода 1 npm ERR! npm ОШИБКА! Не удалось выполнить тестовый сценарий my-project@0.1.0. npm ОШИБКА! Вероятно, это не проблема npm. Вероятно, есть дополнительные выходные данные журнала.

база данных. js

module.exports = ({ env }) => ({
  defaultConnection: 'default',
  connections: {
    default: {
      connector: 'bookshelf',
      settings: {
        client: 'mysql',
        host: env('DATABASE_HOST', '127.0.0.1'),
        port: env.int('DATABASE_PORT', 3306),
        database: env('DATABASE_NAME', 'myDB'),
        username: env('DATABASE_USERNAME', 'root'),
        password: env('DATABASE_PASSWORD', ''),
        ssl: env.bool('DATABASE_SSL', false),
      },
      options: {}
    },
  },
});

тест / база данных. json

{
  "defaultConnection": "default",
  "connections": {
    "default": {
      "connector": "bookshelf",
      "settings": {
        "client": "mysql",
        "filename": ".tmp/test.db"
      },
      "options": {
        "useNullAsDefault": true,
        "pool": {
          "min": 0,
          "max": 15
        }
      }
    }
  }
}

tests / app.test. js

const fs = require('fs');
const { setupStrapi } = require('./helpers/strapi');

/** this code is called once before any test is called */
beforeAll(async (done) => {
  await setupStrapi(); // singleton so it can be called many times
  done();
});

/** this code is called once before all the tested are finished */
afterAll(async (done) => {
  const dbSettings = strapi.config.get('database.connections.default.settings');

  //delete test database after all tests
  if (dbSettings && dbSettings.filename) {
    const tmpDbFile = `${__dirname}/../${dbSettings.filename}`;
    if (fs.existsSync(tmpDbFile)) {
      fs.unlinkSync(tmpDbFile);
    }
  }
  done();
});

it('strapi is defined', async (done) => {
  expect(strapi).toBeDefined();
  done();
});

tests / helpers / strapi. js

const Strapi = require('strapi');
const http = require('http');

let instance;

async function setupStrapi() {
  if (!instance) {
    /** the following code in copied from `./node_modules/strapi/lib/Strapi.js` */
    await Strapi().load();
    instance = strapi; // strapi is global now
    await instance.app
      .use(instance.router.routes()) // populate KOA routes
      .use(instance.router.allowedMethods()); // populate KOA methods

    instance.server = http.createServer(instance.app.callback());
  }
  return instance;
}
module.exports = { setupStrapi };

1 Ответ

0 голосов
/ 16 июля 2020

Это происходит от имени папки, в документации это указано ./config/env/test/database.json, а в вашей статье ./config/environments /test/database.json.

На самом деле это зависит от вашей версии strapi, env в новой.

В этом выпуске вы получите все подробности: проблема на Strapi Github

...