コード :
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 を使用してモカの関数である関数パラメータをテストする別の方法はありますか?