Сиквелизируйте имитацию модели findAll и findOne с помощью sequelize-mock и jest - PullRequest
0 голосов
/ 18 июня 2020

Для CRUD моего пользователя я пишу тест UNIT, используя sequelize-mock и jest . У меня работает фиктивная модель, но моя проблема связана с фиктивной моделью findAll () и findOne (), вызывающей их обе в моем тестовом наборе Users, оба возвращают результаты в очереди, которые я определил в своей макетной модели. Я ожидаю, что если я вызову findAll (), я должен получить все данные, которые определены в моих результатах в очереди, и если я вызову findOne (), я должен получить только одни данные из результата в очереди на основе переданного мной идентификатора. Установка фиктивной модели autoQueryFallback: false для меня не работает.

Вот фрагмент кода:

В моих контроллерах / пользователях. js

module.exports = { async list (req, res) { Users.findAndCountAll({ limit: 10, offset: 0 }).then(data => { console.log('Users >>> ', data); }); }, async view (req, res) { Users.findOne({ where: { id: req.params.id } }).then(data => { console.log('User Data by ID >>> ', data); }); } };

Чтобы смоделировать модель пользователя, мне нужно создать каталог mocks рядом с моделями (так работает Jest). Итак, у меня есть такая структура каталогов в моих моделях

модели / пользователи. js

модели / имитирует / пользователей. js

const Users = dbMock.define('users', {}, { autoQueryFallback: false }); Users.$queueResult([ Users.build({ id: 1, email: 'testActive@test.com', fullname : 'Test Active Users', status: 'active', }), Users.build({ id: 2, email: 'testDeleted@test.com', fullname: 'Test Deleted Users' status: 'deleted', }), ]);

Mocks

Я хочу протестировать как users.list, так и users.view, используя набор данных в моей моделированной модели

jest.mock('../models/users'); describe('Testing use.list()', () => { it('UsersController.list() should return a status code 201 and all Users data in object array', async () => { await users.list(req, res); expect(res.json).toBeCalledWith( expect.objectContaining({ data: expect.any(Object) }) ); }); it('UsersController.view() should return a status code 201 and user data obj', async () => { //Passed req.params.id = 2 await user.login(req, res); expect(res.status).toHaveBeenCalledWith(failureCode); expect(res.json).toBeCalledWith( expect.objectContaining({ data: expect.any(Object) }) ); }); });

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...