Для 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)
})
);
});
});