Я пытаюсь настроить модульный тест для проекта Strapi, мой код выглядит следующим образом:
test_utils. js
const Strapi = require("strapi");
const http = require('http');
let instance; // singleton
jest.setTimeout(10000)
async function setupStrapi() {
if (!instance) {
instance = Strapi()
await instance.load();
// Run bootstrap function.
await instance.runBootstrapFunctions();
// Freeze object.
await instance.freeze();
instance.app.use(instance.router.routes()).use(instance.router.allowedMethods());
instance.server = http.createServer(instance.app.callback());
}
return instance;
}
module.exports = { setupStrapi }
контроллеров. test. js
const request = require("supertest")
const {setupStrapi, setupUser} = require("../../test_utils")
describe("chat-group controllers", ()=>{
let strapi
beforeAll(async ()=>{
strapi = await setupStrapi()
})
test("endpoint tasks", async (done)=>{
app = strapi
app.server.listen(app.config.port, app.config.host)
const resp = await request(app.server).get("/testpublics")
.expect(200)
console.log(resp.body)
done()
})
})
, когда я запускаю тест, я получаю ошибку 403 в "/ testpublics". Обратите внимание, что "/ testpublics" - это publi c api, и я могу получить к нему доступ из браузера.
Мне кажется, проблема в функции setupStrapi
, я взял код из файла node_modules/strapi/lib/strapi.js
.
Как лучше настроить юнит-тест для проекта Strapi? Я хочу добиться следующего
- запуска теста с чистой базой данных каждый раз
- test publi c и аутентифицированных конечных точек API