Я пишу тесты для моего API.
Вот здесь я тестирую POST /users/:userId/item:
it('should add item to user', async () => {
await myTestsHelper.cleanDb();
// создаю юзера в БД. Мой вопрос про вот эту функцию :)
const user = await myTestsHelper.factories.createSomeUser();
// вызываю тестируемый эндпоинт
await request.post(`/users/$(user.id)/item`)
.expect(200);
// and expect bla bla bla ... Тут все понятно :)
})
Что должно быть внутри функции myTestsHelper.factories.createSomeUser?
Дело в том, что создание юзера в моей системе это "магические вычисления" и заполнение кучи таблиц (user, billing, settings, images). Функционал создания юзера лежит в моем эндпоинте
POST /user
Я вижу три пути реализации
myTestsHelper.factories.createSomeUser:- http запрос к POST /user (самый способ)
- добавление записей в таблицы (как бы эмуляция результата работы POST /user) (усложнение кода тестов, сложно поддерживать)
- попытаться выдрать из эндпонта POST /user функцию addUser и дергать ее в тестах
(что?? ради теста менять структуру приложения, выдирать функцию??)
Все три способа будут работать. Но как правильно?
1 вариант годный?
Заранее благодарю!
P.S. nodejs, expressjs, mocha, tdd