ios – 如何从OCMock开始并检查方法是否被调用

我正在尝试与Ocmock打交道.我创建了简单的类MyClass.
@interface MyClass : NSObject
- (Nsstring *)simpleMethod;
@end

@implementation MyClass

- (Nsstring *)simpleMethod {
    [self method];
    return @"simple";
}

- (void)method {
    NSLog(@"ABC");
}

@end

我想要检查的是调用simpleMethod时是否调用了method方法.现在我有以下代码,但它不起作用:

- (void)testMethodInvoked
{
    id mock = [OcmockObject mockForClass:[MyClass class]];
    [[mock stub] simpleMethod];

    SEL selector = NSSelectorFromString(@"method");
    [[mock expect] methodForSelector:selector];
    [mock verify];
}

我该如何测试这个案例?我认为这很容易做到,但我不知道如何解决这个问题.

如何创建调用方法方法的mock和调用方法simpleMethod?

当前日志:

<unkNown>:0: error: -[OcmockTestTests testOne] : OcmockObject[MyClass]: expected method was not invoked: methodForSelector:@selector(method)

解决方法

您实际上从未创建要测试的类的对象.此外,您必须首先,然后调用方法
- (void)testMethodInvoked
{
    // first create an object that you want to test:
    MyClass *object = [[MyClass alloc] init];
    // create a partial mock for that object
    id mock = [OcmockObject partialMockForObject:object];
    // tell the mock object what you expect
    [[mock expect] method];
    // call the actual method on the mock object
    [mock simpleMethod];
    // and finally verify
    [mock verify];
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...