Javascript Sinon不模拟db mysql Node.js库

Javascript Sinon不模拟db mysql Node.js库,javascript,node.js,unit-testing,mocha.js,sinon,Javascript,Node.js,Unit Testing,Mocha.js,Sinon,我试图在Node.js中使用Sinon和Mocha模拟我的数据库进行测试。我尝试了以下方法: var sinon = require('sinon'); var mysql = require('db-mysql'); beforeEach(function() { var db = sinon.mock(mysql); db.expects('execute'); }); 但我一直收到以下错误:TypeError:试图将未定义的属性包装为函数执行 我假设这是在模拟类,而不是数据库实

我试图在Node.js中使用Sinon和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())模拟了该实例取而代之。当我这样做时,那么所有用于
dbmysql
实例的有效方法都在传递,例如
db.connect()
db.query()
,无论参数是什么。我无法控制自己的行为。要设置行为,我尝试调用
。预期
db
上的
,但我得到以下错误:

TypeError:Object[Object Object]没有方法“预期”


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

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


如何在数据库对象中存根查询对象,以便运行存根执行?
sinon.stub(db.query,“execute”)也许?