对于这个项目,我使用
MySQL DB
和Sequelize
ORM。为了进行测试,我使用了 mocha
、chai
和 sinon
模块。
我有一个
User
模型和方法createUser
。我正在尝试使用 sequelize-mock
来模拟用户数据。这是代码片段:
const SequelizeMock = require("sequelize-mock");
const dbMock = new SequelizeMock();
const userMock = dbMock.define("users");
// Mocking multiple records in a single mock
// Reference - github.com/BlinkUX/sequelize-mock/issues/55#issuecomment-383311654
userMock.$queueResult([
userMock.build({
id: 1,
userName: "Superman"
}),
userMock.build({
id: 2,
userName: "Batman"
})
]);
describe("createUser test", () => {
it("creates user", async () => {
console.log(`--------------- 1 -----------------`);
let allUsers = await userMock.findAll();
console.log(`allUsers = ${JSON.stringify(allUsers)}`);
expect(allUsers.length).to.equal(2);
console.log(`--------------- 2 -----------------`);
allUsers = await userMock.findAll();
console.log(`allUsers = ${JSON.stringify(allUsers)}`);
expect(allUsers.length).to.equal(2);
console.log(`--------------- 3 -----------------`);
});
});
但是
userMock.findAll()
只工作一次。这是相同的控制台日志:
createUser test
--------------- 1 -----------------
allUsers = [{"id":1,"userName":"Superman","createdAt":"2020-01-01T09:36:48.286Z","updatedAt":"2020-01-01T09:36:48.286Z"},{"id":2,"userName":"Batman","createdAt":"2020-01-01T09:36:48.286Z","updatedAt":"2020-01-01T09:36:48.286Z"}]
--------------- 2 -----------------
allUsers = [{"id":1,"createdAt":"2020-01-01T09:43:35.030Z","updatedAt":"2020-01-01T09:43:35.030Z"}]
这是我的问题:
findOne()
并更新一个用户记录的数据(存在于 userMock 中)。然后我需要再次使用 findOne() 找到更新的记录。 PS - Github 测试回购 URL - https://github.com/shrirambalakrishnan/sequelize-mock-test。 您可以运行
npm test
来运行测试并查看控制台日志。