Sar*_*ran 14 objective-c ocmock ios
我的方法的一个参数是**错误,我的项目处于ARC模式.当为此方法编写存根以调用模拟方法时,我将参数设置为以下可能的值.它导致编译错误或无法匹配参数以调用mock方法.
什么都行不通.
如何模仿这种方法?请指教.
编辑
-(id)init{
self = [super init];
if (self) {
id wcm = [OCMockObject partialMockForObject:self];
[[[wcm stub] andCall:@selector(mockGetWakeupCallsForRoomNumber:error:) onObject:self] getWakeupCallsForRoomNumber:OCMOCK_ANY error:((NSError __autoreleasing **) [OCMArg anyPointer])];
//[[[wcm stub] andCall:@selector(testMockMethod) onObject:self] testMethod];
}
return self;
}
-(void)testMethod
{
NSLog(@"Original");
}
-(void)testMockMethod
{
NSLog(@"Mock");
}
-(NSArray*)mockGetWakeupCallsForRoomNumber:(NSString*)roomNumber error:(NSError**)error
{
@throw @"Mock method called";
}
-(NSArray*)getWakeupCallsForRoomNumber:(NSString*)roomNumber error:(NSError**)error
{
}
Run Code Online (Sandbox Code Playgroud)
模拟testMockMethod工作.
Chr*_*lay 20
你可以使用setTo:或者anyPointer如果你施放它:
[[[mockFoo expect] andReturn:nil] someMethodWithError:((NSError __autoreleasing **)[OCMArg anyPointer])];
Run Code Online (Sandbox Code Playgroud)
要么:
NSError *error;
[[[mockFoo expect] andReturn:nil] someMethodWithError:((NSError __autoreleasing **)[OCMArg setTo:error])];
Run Code Online (Sandbox Code Playgroud)
这是一个测试用例,它通过您发布的方法传递:
@interface Foo : NSObject{}
-(NSArray*)mockGetWakeupCallsForRoomNumber:(NSString*)roomNumber error:(NSError**)error;
-(NSArray*)getWakeupCallsForRoomNumber:(NSString*)roomNumber error:(NSError**)error;
@end
@implementation Foo
-(NSArray*)mockGetWakeupCallsForRoomNumber:(NSString*)roomNumber error:(NSError**)error
{
return @[@"bar"];
}
-(NSArray*)getWakeupCallsForRoomNumber:(NSString*)roomNumber error:(NSError**)error
{
return nil;
}
@end
@interface SomeTest : SenTestCase {}
@end
@implementation SomeTest
-(void)testMethod
{
Foo *foo = [Foo new];
id wcm = [OCMockObject partialMockForObject:foo];
[[[wcm stub] andCall:@selector(mockGetWakeupCallsForRoomNumber:error:) onObject:foo] getWakeupCallsForRoomNumber:OCMOCK_ANY error:((id __autoreleasing *)[OCMArg anyPointer])];
NSError *error;
NSArray *calls = [wcm getWakeupCallsForRoomNumber:@"foo" error:&error];
STAssertEquals(calls[0], @"bar", @"should match");
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3259 次 |
| 最近记录: |