Sinon不要模仿db-mysql Node.js库
我试图在Node.js中使用Sinon和Mocha来模拟我的数据库进行testing。 我已经尝试了以下内容:
var sinon = require('sinon'); var mysql = require('db-mysql'); beforeEach(function() { var db = sinon.mock(mysql); db.expects('execute'); });
但我不断收到以下错误: TypeError: Attempted to wrap undefined property execute as function
我假设这是嘲笑类而不是数据库实例。 所以我通过做var db = sinon.mock(new mysql.Database());
嘲笑实例var db = sinon.mock(new mysql.Database());
代替。 当我这样做的时候,那么db-mysql
实例的所有有效方法都会传递,比如db.connect()
和db.query()
,不pipe参数是什么。 我无法设置行为。 为了设置行为,我试图在db
上调用.expects
但是我得到以下错误:
TypeError: Object [object Object] has no method 'expects'
什么是设定预期行为的正确方法? 此外,如何testing同一function的几种行为? 我是否需要根据testing的期望在每个testing中做到这一点?
这是因为execute
是query
对象的一部分,而不是数据库本身。