根据OCMock的文档,应该可以测试类方法,但我可能会误解OCMock的功能和不可能。采用我想测试的以下示例方法:
- (void)methodToTest {
[SVProgressHUD dismiss];
}
我想测试dismiss
上是否SVProgressHUD
被调用。我目前使用以下测试,但这似乎没有办法。
- (void)testMethodToTest {
// Create Mock Progress HUD
id mockProgressHUD = OCMClassMock([SVProgressHUD class]);
// Configure Mock Progress HUD
OCMStub(ClassMethod([mockProgressHUD dismiss]));
// Invoke Method to Test
[object methodToTest];
OCMVerify([mockProgressHUD dismiss]);
}
OCMock是否可以测试dismiss
是否调用了SVProgressHUD
?
答案 0 :(得分:0)
你的考试通过我。也许它在您的实施中有些微妙之处?什么是object
?这是我的简化版本:
@interface Foo : NSObject
+ (void)dismiss;
@end
@implementation Foo
+ (void)dismiss
{
NSLog(@"Dismiss!");
}
@end
@interface Bar : NSObject
- (void)methodToTest;
@end
@implementation Bar
- (void)methodToTest
{
[Foo dismiss];
}
@end
- (void)testClassMock
{
Bar *bar = [Bar new];
id mockFoo = OCMClassMock([Foo class]);
OCMStub(ClassMethod([mockFoo dismiss]));
[bar methodToTest];
OCMVerify([mockFoo dismiss]);
}