根据OCMock的文档,测试类方法应该是可能的,但我可能误解了OCMock可以测试什么和不可以测试什么。以我想要测试的以下示例方法为例:
- (void)methodToTest {
[SVProgressHUD dismiss];
}我想测试一下在SVProgressHUD上是否调用了dismiss。我目前使用下面的测试,但这似乎没有起到作用。
- (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测试是否在SVProgressHUD上调用了dismiss
发布于 2014-12-10 00:32:15
你的测试对我来说通过了。也许这是你的实现中的一些微妙之处?什么是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]);
}https://stackoverflow.com/questions/27378032
复制相似问题