Cedar - проверка того, что метод был вызван дважды с разными значениями
Я пытаюсь проверить, что метод вызывается дважды с конкретными значениями, но я не могу проверить оба вызова, только первый. Я проверил, что метод вызывается дважды, и что значения верны, но я не уверен, как написать спецификацию кедра.
Вот что у меня есть:
it(@"should call sleep with time intervals of 0 and 5", ^{
// subject is a spied on object
subject should have_received(@selector(someMethod:)).with(0); // Passes
subject should have_received(@selector(someMethod:)).with(5); // Fails
}
Я получаю ошибку:
Expected <MyObject> to have received message <someMethod:>, with arguments: <5> but received messages:
someMethod:<0>
someMethod:<5>
1 ответ
Я думаю, что проблема, с которой вы сталкиваетесь, в том, что Cedar очень требователен к типам. Например, предполагая someMethod:
принимает NSTimeInterval, именно так вы бы исправили свою проблему. (Если это не NSTimeInterval, замените его на фактический тип).
it(@"should call sleep with time intervals of 0 and 5", ^{
// subject is a spied on object
subject should have_received(@selector(someMethod:)).with((NSTimeInterval)0);
subject should have_received(@selector(someMethod:)).with((NSTimeInterval)5);
}
Когда вы звоните [subject someMethod:5]
целое число 5 неявно преобразуется из целого числа в NSTimeInterval, но этого не происходит, когда вы передаете целое число 5 кедру with()
Таким образом, кедр не рассматривает их как идентичные. Ваше первое утверждение прошло только потому, что оно равно 0. Если вы измените его на ненулевое значение, вы обнаружите, что оно потерпело неудачу, как и второе утверждение.