首页 > 解决方案 > 带有回调的开玩笑假函数

问题描述

我试图在下面的代码中伪造 mysqlconnection.execute 函数

const insertAccount = (mySqlConnection, userId, rowData, instName) => {
  console.log(mySqlConnection)
  return new Promise((resolve, reject) => {
    mySqlConnection.execute(
      'insert into account(userId, rowData, instName) values(?, ?, ?)',
     [userId, rowData, instName], (err, results) => {
       console.log(err, results)
       if (err) {
        reject(err);
      } else {
        console.log('......... results ', results)
        resolve({ accountId: results.insertId });
      }
    });
  })
}
export default insertAccount;

我尝试了多次迭代都没有成功,我最新的测试功能如下

import insertAccount from '../../../accountRoutines/insertAccount.js';

class mockSql {
  errMsg;
  resultValue;
  callback;
  constructor(errMsg, resultValue) {
    this.errMsg = errMsg;
    this.resultValue = resultValue;
  }

  execute(stmt, id, err, results) {
    err = () => { return this.errMsg }
    results = () => { return this.resultValue }
    if (this.errMsg) err()
    else results()
  }
}

describe("Account insert mysql routines", () => {
  it("insert account fail", async () => {
    return expect(insertAccount(new mockSql('test error', null), 1, '', '')).rejects.toEqual('test error');
  })

  it("insert account succeed", async () => {
    return expect(insertAccount(new mockSql(null, { insertId: 1 }), 1, '', '')).resolves.toEqual(true);
  })
})

谁能帮我解决这个问题

先感谢您

标签: node.jscallbackjestjs

解决方案


推荐阅读