Настройка тестовой среды для проекта Strapi - PullRequest
1 голос
/ 25 апреля 2020

Я пытаюсь настроить модульный тест для проекта 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
...