javascript - Sinon 不 Mocking db-mysql Node.js 库

标签 javascript node.js unit-testing mocha.js sinon

我正在尝试使用Sinon和Node.js中的Mocha来模拟我的数据库进行测试。我尝试过以下方法:

var sinon = require('sinon');
var mysql = require('db-mysql');

beforeEach(function() {
  var db = sinon.mock(mysql);
  db.expects('execute');
});

但我不断收到以下错误:TypeError:尝试将未定义的属性作为函数执行

我认为这是模拟类而不是数据库实例。因此,我通过执行 var db = sinon.mock(new mysql.Database()); 来模拟该实例。当我这样做时,db-mysql 实例的所有有效方法都会传递,例如 db.connect()db.query(),无论参数是什么。我无法设置行为。为了设置行为,我尝试在 db 上调用 .expects 但出现以下错误:

类型错误:对象 [object Object] 没有“期望”方法

设置预期行为的正确方法是什么?此外,如何测试同一函数的多种行为?我需要根据测试的预期在每次测试中执行此操作吗?

最佳答案

这是因为 executequery 对象的一部分,而不是数据库本身。

https://github.com/mariano/node-db-mysql#quick-start

关于javascript - Sinon 不 Mocking db-mysql Node.js 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414937/

相关文章:

node.js - 连接 ECONNREFUSED 127.0.0.1 :4001 N|Solid

node.js - 我的 http 请求有什么问题

Javascript 按索引比较 2 个数组,而不是按 2 个数组共有的值总数

javascript - 将对象数组保存到 codeigniter 中

mysql - Sequelize : How to multiply column into an aggregate function

c# - 模拟 'System.Console' 行为

java - 将 HttpUnit+junit 组织为独立应用程序的最佳设计

在 cobertura-maven-plugin 测试中加载 Spring ApplicationContext

javascript - WebGl:使对象一起移动和单独移动

带有单选按钮的 javascript 警报框