我正在尝试检查是否使用OCMock调用了类方法。我从OCMock网站和其他答案中收集了一些信息,以便新的OCMock版本(2.1)添加了对存根类方法的支持。
我也在尝试做同样的事情:
DetailViewController:
+(BOOL)getBoolVal
{
return YES;
}测试用例:
-(void) testClassMethod
{
id detailMock = [OCMockObject mockForClass:[DetailViewController class]];
[[[detailMock stub] andReturnValue:OCMOCK_VALUE((BOOL){YES})] getBoolVal:nil];
}测试正在运行并且也成功了,但是即使我从DetailViewController中的getBoolVal方法返回NO而不是YES,它也是成功的。在该方法上保留断点时,测试执行不会停止指示该方法未被调用。
那么我该如何检查类方法呢?
发布于 2013-08-16 00:54:10
也许我在这里遗漏了什么(我知道这有点旧),但是您的类签名是+(BOOL)getBoolVal { return YES; },并且在您的测试中,您将在getBoolVal:nil上调用expect
它们不匹配,对吧?在这种情况下,你的类模拟会说,“哦,这不是我想要的签名”,并试图将它传递给underyling类,我相信。请参阅OCMock source中的forwardInvocationForClassObject。
至于为什么会得到NO (因为底层类也返回YES,这使得这个测试有点无意义,但这是另一个问题),我不是100%确定的,但可能只是一个C-ism --‘不确定的值,void,0(false/NO)’“
https://stackoverflow.com/questions/16461274
复制相似问题