首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OCMock版本2.1.1测试类方法

使用OCMock版本2.1.1测试类方法
EN

Stack Overflow用户
提问于 2013-05-09 19:59:52
回答 1查看 705关注 0票数 0

我正在尝试检查是否使用OCMock调用了类方法。我从OCMock网站和其他答案中收集了一些信息,以便新的OCMock版本(2.1)添加了对存根类方法的支持。

我也在尝试做同样的事情:

DetailViewController:

代码语言:javascript
复制
+(BOOL)getBoolVal
{
return YES;
}

测试用例:

代码语言:javascript
复制
-(void) testClassMethod
{
id detailMock = [OCMockObject mockForClass:[DetailViewController class]];

[[[detailMock stub] andReturnValue:OCMOCK_VALUE((BOOL){YES})] getBoolVal:nil];
}

测试正在运行并且也成功了,但是即使我从DetailViewController中的getBoolVal方法返回NO而不是YES,它也是成功的。在该方法上保留断点时,测试执行不会停止指示该方法未被调用。

那么我该如何检查类方法呢?

EN

回答 1

Stack Overflow用户

发布于 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)’“

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16461274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档