【发布时间】:2021-01-24 10:12:31
【问题描述】:
我正在尝试将函数存根以进行单元测试,但我不确定这是否可行,或者我应该在能够做到之前进行更改。我会尽量说明情况
文件aController.js
...
module.exports = (sqlConnection) => {
...
return {
...
aControllerFunction,
...
}
function aControllerFunction(req, res, next) {
const aService = require('../services/aService')(sqlConnection, req.models)
...
aService.aServiceFunction(req.a, req.b)
}
...
}
...
文件aService.js
...
module.exports = (sqlConnection, models) => {
return {
...
aServiceFunction,
...
}
...
function aServiceFunction(a, b) {
...
models.aModel.update(a)
sqlConnection.queryAsync(`UPDATE... ${a}`)
...
}
...
}
...
我想对函数 aControllerFunction 和 aServiceFunction 进行单元测试。
对于aControllerFunction,我应该存根aService.aServiceFunction,对于aServiceFunction.aServiceFunction,我应该存根sqlConnection.queryAsync和models.aModel.update。
这种结构可以实现吗,还是我应该先改变它?我尝试这样做,但我发现很难存根,因为需求在函数内部。
【问题讨论】:
-
你是否返回
aControllerFunction函数,同样的aServiceFunction函数?否则,它们是私有的。无法在测试文件中获取它们。 -
@slideshowp2 感谢您的回答,我更新了问题。控制器和服务中有导出,因为正在导出功能。但是要求在功能范围内。有没有办法可以消除它的行为?谢谢
标签: javascript node.js unit-testing sinon stub