【问题标题】:How to mock sequelize in commonjs with sinon?如何使用 sinon 在 commonjs 中模拟 sequelize?
【发布时间】:2022-11-14 18:16:12
【问题描述】:

我尝试使用下面的代码,但一直告诉我 无法存根不存在的属性查询 有没有办法存根续集查询?

我在网上找到的只是对象基础续集。

这是代码

const query = async () => {
    const Sequelize = require("sequelize");
    let db = {};
    let sequelize = new Sequelize({
        dialect: "mysql",
        database: "sample",
        username: "test",
        password: "test",
        host: "sample",
        operatorsAliases: 0,
        logging: false,
    
    });
    
    db.Sequelize = Sequelize;
    db.sequelize = sequelize;
    let result = {};
    let _metadata = [];
    try {
        [result, _metadata] = await sequelize.query(query);
        result._metadata = _metadata;
    }finally{
        await sequelize.close();
    }
    return result;
}

module.export = {
  query
}

这是测试

const sinon = require("sinon");
const { expect } = require("chai");
const Sequelize = require("sequelize");
const db = require("./db");

describe("Sequelize Unit Test", () => {
    context("Unit Test Start", () => {
        let sequelizeStub;
         beforeEach(async () => {
            sequelizeStub = sinon.stub(Sequelize, "query");
        });
        // Runs after each test case
        afterEach(async () => {
            sequelizeStub.restore();
        });

        it("returns object", async () => {
            sequelizeStub.return({ result: [], metadata: [] });
            let test = await db.query("test", mockSMcred );
            console.log(test);
        });

    }
}
 

出于某种原因,我无法存根查询? 尝试了节点模块,我没有看到任何查询

我不能使用模型续集,因为我正在维护一些旧代码。 我真的不知道该怎么做了。

我唯一的方法就是使用查询

【问题讨论】:

标签: node.js sequelize.js chai sinon stub


【解决方案1】:

谁能帮我清除这个错误?

我正在尝试使用 Sequelize 模拟数据库连接。 请参阅下图以了解错误。

https://i.stack.imgur.com/IgpwD.png

也添加完整的代码。



import {database} from '../src/database';
import {sinon} from 'sinon';
import {expect} from 'chai';
import { Sequelize } from 'sequelize';


describe("Sequelize Unit Test", () => {
    context("Unit Test Start", () => {
        let sequelizeStub;
         beforeEach(async () => {
            sequelizeStub = sinon.stub(Sequelize, "query");
        });
        // Runs after each test case
        afterEach(async () => {
            sequelizeStub.restore();
        });

        it("returns object", async () => {
        console.log("=====================",sequelizeStub)
        
            sequelizeStub.return({ result: [], metadata: [] });
            let test = await database.query("test", mockSMcred );
            console.log(test);
        });

    })
})

【讨论】:

    猜你喜欢
    • 2018-04-12
    • 2019-03-24
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 2018-10-27
    相关资源
    最近更新 更多