代码:
Model = {};
var functionToTest = function (dataPoints) {
return Model.getDataPointValue(dataPoints, function (dataPoint) {
if (dataPoint.unit === 'unit') {
return dataPoint.value;
}
});
};
Model.functionToTest = functionToTest;
测试用例:
describe ('functionToTest', function () {
it ('validates correct value is returned', function () {
var dataPoints = [{
'unit': 'unit',
'value' : 1
}];
var mock = sinon.mock(Model);
mock.expects('getDataPointValue').once().withExactArgs(dataPoints, function (dataPoint) {
if (dataPoint.unit === 'unit') {
return dataPoint.value;
}
});
Model.functionToTest(dataPoints);
mock.verify();
});
});
回应:
ExpectationError: Unexpected call: getDataPointValue([{ unit: "unit", value: 1 }], function () {})
Expected getDataPointValue([{ unit: "unit", value: 1 }], function () {}) once (never called)
我无法弄清楚为什么它不会接受与参数相同的函数定义。有线索吗? 有没有一种不同的方法来测试函数参数是使用sinon在mocha中的函数?
答案 0 :(得分:2)
如果你总是将相同的函数传递给getDataPointValue,那么就不需要测试该函数是否被传递,你只能测试第一个参数是否像这样传递:
mock.expects('getDataPointValue').once().withArgs(dataPoints);