对于strapi单元测试(使用mysql作为数据库),我遵循了正式文档,当我使用npm运行测试运行相同时,我会得到如下所示的错误
my@0.1.0测试D:\Gerrit\website_backend\TE_MCA_DMSWEBV2 jest -forceExit-检测
用"1“调用process.exit
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运行test/app.test.js npm!代码ELIFECYCLE npm错误!错误1国家预防机制错误!my@0.1.0测试:jest --forceExit --detectOpenHandles npm!退出状态1 npm错误!国家预防机制错误!@0.1.0测试脚本失败。国家预防机制错误!这可能不是npm的问题。上面可能还有额外的日志输出。
database.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: {}
},
},
});test/database.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 };发布于 2020-07-16 08:52:50
它来自文件夹名,在它访问的文档中是./config/env/test/database.json,,但在您的文章./config/environments/test/database.json.中
实际上,这取决于新版本中的strapi,env。
在这个问题上,您将得到所有的细节:关于Strapi Github的问题
https://stackoverflow.com/questions/62888737
复制相似问题