一尘不染

您如何在Node.js中模拟MySQL(无ORM)?

node.js

我正在使用Node.jsfelixge的node-mysql客户端。我没有使用ORM。

我正在用Vows进行测试,并希望能够模拟我的数据库(可能使用Sinon)。由于除之外node-mysql我本身还没有DAL
,因此我不确定如何执行此操作。我的模型大多是带有许多吸气剂的简单CRUD。

关于如何实现此目标的任何想法?


阅读 248

收藏
2020-07-07

共1个答案

一尘不染

使用sinon,您可以在整个模块上放置一个模拟或存根。例如,假设mysql模块具有一个功能query

var mock;

mock = sinon.mock(require('mysql'))
mock.expects('query').with(queryString, queryParams).yields(null, rows);

queryStringqueryParams是您期望的输入。rows是您期望的输出。

当您正在测试的类现在需要mysql并调用该query方法时,它将被sinon拦截并验证。

在测试期望部分中,您应该具有:

mock.verify()

在拆解中,您应该将mysql恢复为正常功能:

mock.restore()
2020-07-07