2014-10-18 2 views
37

У меня есть функция I stubbing, которая вызывается с несколькими аргументами. Я хочу проверить только первый аргумент. Остальные функции обратного вызова, поэтому я хочу оставить их в покое. Таким образом, я мог бы иметь следующие 2 вызова, используя Ajax в качестве примера:Может ли sinon stub withArgs сопоставлять некоторые, но не все аргументы

method.get = sinon.stub(); 
method.get(25,function(){/* success callback */},function(){/* error callback */});   
method.get(10,function(){/* success callback */},function(){/* error callback */}); 

Я не могу использовать method.get.calls..., потому что тогда он не делает различий между первой get(25) и второй get(10). Но если я использую method.get.withArgs(25).calls..., то он тоже не соответствует, потому что withArgs() соответствует всем аргументам, которые этого не делают (и никогда не было, с такими обратными вызовами).

Как получить столбцы sinon для проверки и настройки ответов на основе только 1-го аргумента?

ответ

64

http://sinonjs.org/docs/#sinon-match-api

Вы можете использовать sinon.match.any:

method.get.withArgs(25, sinon.match.any, sinon.match.any); 
+2

Спасибо. Было бы неплохо, если бы я мог сделать 'method.get.withFirstArgs (25)' и, таким образом, до тех пор, пока 'arg [0]' is '25' будет соответствовать, но, я думаю, его не существует. – deitch

+0

Отлично работает! [Вот фиксированная ссылка] (http://sinonjs.org/releases/v3.2.1/matchers/#sinonmatchany) к последним документам 'sinon.match.any'. – WimpyProgrammer

2

Если вы просто хотите проверить, первый аргумент можно использовать

method.get.withArgs(25).calledOnce 

или

method.get.calledWith(25) 
Смежные вопросы