【发布时间】:2017-01-16 21:43:22
【问题描述】:
我将在我的工作地点对我们的 JavaScript 文件进行测试。我决定使用 Mocha、Chai 和 Sinon 库来帮助进行测试。我开始为不需要太多重构的函数编写单元测试,然后遇到了一个我不太了解的有趣案例。
function getQueries() {
code that returns queries in an array -> ['one', 'two', 'three']
}
function sort(col, type) {
var queries = getQueries();
some code that sorts these queries
return sorted array
}
因为我正在对排序函数进行单元测试,所以我想存根 getQueries() 以返回一个虚拟列表。
var queries = ['one', 'two', 'three'];
sinon.stub(getQueries).returns(queries);
上面的代码没有工作错误消息:
TypeError: Attempted to wrap undefined property undefined as function
at Object.wrapMethod (file://node_modules/sinon/pkg/sinon-1.17.7.js:1359:29)
at Object.stub (file://node_modules/sinon/pkg/sinon-1.17.7.js:3459:26)
at F.stub (file://node_modules/sinon/pkg/sinon-1.17.7.js:4200:44)
at Context.obj.stub (file://node_modules/sinon/pkg/sinon-1.17.7.js:4215:37)
at Context.<anonymous> (unit_tests/unit_test.js:154:10)
at Context.sinonSandboxedTest (file:/node_modules/sinon/pkg/sinon-1.17.7.js:6069:39)
但是,下面的代码确实可以正常工作。
var queries = ['one', 'two', 'three'];
getQueries = sinon.stub();
getQueries.returns(queries);
我不完全理解为什么这段代码有效,而上面的代码无效。我知道 sinon.stub(obj, method, function) 的语法,但 getQueries 是一个没有对象的函数。非常感谢任何见解。
【问题讨论】:
标签: javascript unit-testing sinon