Javascript Sinon不模拟db mysql Node.js库
我试图在Node.js中使用Sinon和Mocha模拟我的数据库进行测试。我尝试了以下方法: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:试图将未定义的属性包装为函数执行 我假设这是在模拟类,而不是数据库实
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”)代码>也许?