【问题标题】:Sequelize Mock doesn't work properly with Sequelize function "count"Sequelize Mock 不能与 Sequelize 函数“count”一起正常工作
【发布时间】:2021-06-18 16:48:36
【问题描述】:

当我在这样的查询之间使用 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')

对吗?

【问题讨论】:

    标签: javascript unit-testing mocking sequelize.js


    【解决方案1】:

    您可以将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 已被使用。

    【讨论】:

      【解决方案2】:

      我走错了路

      这是对方法的测试。

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

      【讨论】:

        猜你喜欢
        • 2021-10-09
        • 2021-02-05
        • 2018-10-23
        • 1970-01-01
        • 2015-04-23
        • 1970-01-01
        • 1970-01-01
        • 2018-07-21
        • 1970-01-01
        相关资源
        最近更新 更多