Sequelize Mock 无法与 Sequelize 函数一起正常工作 "count"

Sequelize Mock doesn't work properly with Sequelize function "count"

当我在这样的查询之间使用 Sequelize Mock 时:

const {
    active,
    'in-progress': inProgress,
  } = await ImmediateCare.findAll({
    raw: true,
    attributes: ['status', [fn('count', col('id')), 'count']],
    group: ['ImmediateCare.status'],
  }).then((status) => {
    const counts = {
      active: 0,
      'in-progress': 0,
    }

    status.forEach((s) => {
      counts[s.status] = parseInt(s.count, 10)
    })

    return counts
  })

正在返回 NaN,我猜这是因为 Sequelize Mock 无法模拟 sequelize.fn('count')

对吗?

您可以将 Sinon 与 Sequelize Mock 一起使用,并使用模拟数据存根 findAll 调用。 像这样:

const sinon = require('sinon');
const SequelizeMock = require('sequelize-mock');
describe('', () => {
beforeEach(() => {
const dbConnection = new SequelizeMock();
const dbStub = sinon.stub(dbConnection, 'define');
const queryStub = sinon.stub().resolves(mockImmediateCareData);
dbStub.returns({ findAll : queryStub })
})
})

如果这没有帮助,你能分享定义的模拟对象吗? 此外,不需要 .then(),因为已经在使用 await。

我走错了路

这是方法的测试。

我不应该测试 Sequelize 计数响应,我只需要模拟结果