Код:.Sinon макет ожидает() withExactArgs (функция() {}) возвращает один раз (никогда не называли)
Model = {};
var functionToTest = function (dataPoints) {
return Model.getDataPointValue(dataPoints, function (dataPoint) {
if (dataPoint.unit === 'unit') {
return dataPoint.value;
}
});
};
Model.functionToTest = functionToTest;
Test Case:
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)
Я не могу понять, почему он не примет такое же определение функции, как параметр. Любые подсказки? Есть ли другой способ проверить параметры функции, выполняемые в мокко, используя синус?
Япа, но те частичное решение, так как код, находящийся в передаваемой функции, никогда не проверяется. –
Он проверяет, что getDataPoint вызывается с правильными аргументами. Если вы хотите протестировать эту анонимную функцию, вы должны переформатировать ее в именованную функцию и создать для нее еще один тест. – vintem