Cedar - 检查是不是使用不同的值调用了两次方法
Posted
技术标签:
【中文标题】Cedar - 检查是不是使用不同的值调用了两次方法【英文标题】:Cedar - Checking that a method was called twice with different valuesCedar - 检查是否使用不同的值调用了两次方法 【发布时间】:2015-05-06 21:56:02 【问题描述】:我正在尝试验证一个方法是否被使用特定值调用了两次,但我似乎无法验证这两个调用,只是第一个调用。我已经验证了该方法被调用了两次并且值是正确的,但是我不确定如何编写 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 赋予 Cedar 的 with()
时,不会发生同样的事情,因此 Cedar 不会将它们视为相同.您的第一个断言通过只是因为它为 0。如果您将其更改为非零值,您会发现它与第二个断言一样失败。
【讨论】:
以上是关于Cedar - 检查是不是使用不同的值调用了两次方法的主要内容,如果未能解决你的问题,请参考以下文章