2015-09-09 2 views
0

Я пытаюсь создать единичный тест, чтобы проверить, что объект, созданный моим кодом, успешно отправлен в функцию обновления (не тестируя функцию обновления в настоящее время так, как это было бы быть интеграционным тестом).Объект с неизвестными значениями в sinon mock withArgs - sinon.match

То, что я пытаюсь сделать, это использовать Sinon издеваться, чтобы проверить, что вход метода обновления правильно:

var objectToUpdate = { 
    "_id": 55f019a32f55b4508b05a155, //mongodb _id assigned earlier in the code 
    etc... 
} 

var mock = sinon.mock(MyClass.prototype); 
mock.expects("update").once().withArgs([objectToUpdate]); 
otherClass.functionThatCallsUpdate(function(error, result){ 
    (typeof error).should.equal.null; 
    mock.verify(); 
    mock.restore(); 
    done(); 
}); 

Проблема заключается в том, что код я тестирую это часть населения базы данных кода, поэтому я не знаю, что будет _ID объекта перед тем, как тест будет запущен, поскольку он создан ранее в этом процессе, поэтому часть теста withArgs() не работает.

Можно ли указать частичный объект для withArgs() в синоне, или есть другой подход, который я должен использовать?

Менее полезным (но лучше, чем ничего) вариантом было бы указать математическое ожидание размера массива, содержащего objectToUpdate, но я тоже не могу найти способ сделать это.

+0

Если я understtod вас правильно, вы должны дразнить '_id' объекта? –

+0

Я издеваюсь над методом 'update'. Мне нужно пройти тест с любым значением '_id' – Carasel

+0

Хорошо, и какая у вас ошибка? –

ответ

1

Можно сделать эту работу путем удаления _id от объекта и с помощью sinon.match:

mock.expects("update").once().withArgs([sinon.match(objectToUpdate)]).yields(null); 
Смежные вопросы