我们正在使用sequelize模拟库来模拟数据库连接,我们已经完成了模拟模型的代理要求,但似乎正在尝试建立与实际数据库的连接。
我们需要做的任何设置以使用sequelize库来模拟sequelize库。
理想情况下,它应该完全忽略数据库。
答案 0 :(得分:0)
来自https://github.com/facebook/jest/issues/1937#issuecomment-462543444
您有
a.js
,要求b.js
和c.js
。同时c.js
也将需要b.js
。并且您在嘲笑b.js
。因此proxyquire将仅模拟{strong>b.js
所需的a.js
。
您可能有一个Javascript文件,需要使用sequelize库而不是sequelize-mock。
jest.mock
将模拟任何b.js
,可在任何地方使用。
下面的示例来自 https://github.com/kvr2277/sequelize-mock-jest/blob/master/src/test/UserDAO.spec.js,展示了如何使用笑话和sequelize-mock:
let UserDAO = require('../main/daos/UserDAO');
jest.mock('../main/models/USER', () => () => {
const SequelizeMock = require("sequelize-mock");
const dbMock = new SequelizeMock();
return dbMock.define('user', {
userId: 2,
emailId: 'xyz@abc.com',
firstName: 'good',
lastName: 'day',
creTs: "2019-01-01 13:30:31",
creUserId: 'dummy'
})
});
describe("Test Sequelize Mocking", () => {
it("Should get value from mock", async () => {
const user = await UserDAO.getOneUser();
expect(user.firstName).toEqual('good');
})
})