使用OCMock测试类方法

时间:2014-12-09 11:37:42

标签: ios unit-testing ocmock

根据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

1 个答案:

答案 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]);
}