2

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

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());来模拟实例。当我这样做时,无论参数是什么,实例的所有有效方法db-mysql都将通过,例如db.connect()and 。db.query()我无法设置行为。要设置行为,我正在尝试调用.expectsdb但出现以下错误:

TypeError: Object [object Object] has no method 'expects'

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

4

1 回答 1

2

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

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

于 2013-10-29T20:23:34.143 回答