我正在尝试使用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] 没有“期望”方法
设置预期行为的正确方法是什么?此外,如何测试同一函数的多种行为?我需要根据测试的预期在每次测试中执行此操作吗?
最佳答案
这是因为 execute
是 query
对象的一部分,而不是数据库本身。
关于javascript - Sinon 不 Mocking db-mysql Node.js 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19414937/