0

我有一个协议来编写 OCUnit 测试 Caes

@interface ClassDeclaration: NSObject{

... Varables 
}
... Methods
// Protocol declartion!
@end
@protocol Message <NSObject>

-(BOOL) isValid;

@end

实现方法写在另一个名为'NewClassName'的类中

-(BOOL) isValid{

    return (self.message != nil);
}

现在!

我正在为协议方法编写测试用例!

-(void)testIsValid{
    ClassDeclaration *obj = [[ClassDeclaration alloc] init];
    SEL methodName = @selector(isValid);
    BOOL test = [obj respondsToSelector:methodName];
}

我的问题是我可以为协议方法编写测试用例吗?

我试图调用 SEL methodName = @selector(isValid);测试用例的方法,这个方法没有调用我不知道为什么?谁能让我知道协议方法将在运行时调用,那么如何通过单元测试调用此方法?

@All 提前致谢!

4

1 回答 1

0

自从提出这个问题以来已经有一段时间了,但是如果有人偶然发现这个问题,我有一个答案。

看看 OCMock 框架。有了它,您可以模拟对象和协议等。您可以在此处找到框架,并在此处查看功能。

OCMock 有一个类方法,您可以使用它来为协议创建模拟:

+mockForProtocol:

如 ocmock.org/features 所述,您可以使用以下命令创建模拟:

id aMock = [OCMockObject mockForProtocol:@protocol(SomeProtocol)]

还有一个可用的描述:

创建一个可以像实现 SomeProtocol 的对象的实例一样使用的模拟对象。

这就是主题。了解OCMock的使用方法,可以参考以下帖子:

除了这些链接之外,您还可以获得此处发布的链接背后的信息。

快乐嘲讽!汤姆特

于 2013-09-05T14:12:07.260 回答