Tom*_*ulc 6 tdd unit-testing objective-c ocmock ios
我正在努力解决这个问题OCMock.我创建了简单的类MyClass.
@interface MyClass : NSObject
- (NSString *)simpleMethod;
@end
@implementation MyClass
- (NSString *)simpleMethod {
[self method];
return @"simple";
}
- (void)method {
NSLog(@"ABC");
}
@end
Run Code Online (Sandbox Code Playgroud)
我想要检查的是method调用方法时simpleMethod是否调用了方法.现在我有以下代码,但它不起作用:
- (void)testMethodInvoked
{
id mock = [OCMockObject mockForClass:[MyClass class]];
[[mock stub] simpleMethod];
SEL selector = NSSelectorFromString(@"method");
[[mock expect] methodForSelector:selector];
[mock verify];
}
Run Code Online (Sandbox Code Playgroud)
我该如何测试这个案例?我认为这很容易做到,但我不知道如何解决这个问题.
如何创建调用方法的mock和call simpleMethod方法method?
当前日志:
<unknown>:0: error: -[OCMockTestTests testOne] : OCMockObject[MyClass]: expected method was not invoked: methodForSelector:@selector(method)
Run Code Online (Sandbox Code Playgroud)
Seb*_*ian 15
您实际上从未创建要测试的类的对象.此外,您必须expect先,然后调用方法:
- (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];
}
Run Code Online (Sandbox Code Playgroud)