Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 使用Sequelize mock和jest对模拟findAll和findOne的模型进行Sequelize_Node.js_Unit Testing_Jestjs_Sequelize.js - Fatal编程技术网

Node.js 使用Sequelize mock和jest对模拟findAll和findOne的模型进行Sequelize

Node.js 使用Sequelize mock和jest对模拟findAll和findOne的模型进行Sequelize,node.js,unit-testing,jestjs,sequelize.js,Node.js,Unit Testing,Jestjs,Sequelize.js,对于我用户的CRUD,我正在使用and编写一个单元测试。模型模拟对我来说很有效,但我的问题是关于模拟模型findAll()和findOne()在我的用户测试套件中调用这两个函数都会返回我在模拟模型中定义的排队结果。我希望,如果我调用findAll(),我应该获得排队结果中定义的所有数据,如果我调用findOne(),我应该根据传递的id从排队结果中只获得一个数据。设置mock modelautoQueryFallback:false对我不起作用 以下是一段代码片段: 在mycontrollers

对于我用户的CRUD,我正在使用and编写一个单元测试。模型模拟对我来说很有效,但我的问题是关于模拟模型
findAll()
findOne()
在我的用户测试套件中调用这两个函数都会返回我在模拟模型中定义的排队结果。我希望,如果我调用
findAll()
,我应该获得排队结果中定义的所有数据,如果我调用
findOne()
,我应该根据传递的id从排队结果中只获得一个数据。设置mock model
autoQueryFallback:false
对我不起作用

以下是一段代码片段:

在my
controllers/users.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);
        });
    }
};
为了模拟我的用户模型,我必须在模型旁边创建一个
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
目录(Jest就是这样工作的)。所以,我的模型中有这个目录结构

> models/users.js
> models/__mocks__/users.js
嘲弄 我想使用模拟模型中的数据集测试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)
            })
        );
    });
});

你设法解决了这个问题吗?我遇到了同样的情况。你解决了这个问题吗?我遇到了同样的情况。
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)
            })
        );
    });
});