ios – 如何在ARC中的OCMock中模拟**参数

ios – 如何在ARC中的OCMock中模拟**参数,第1张

概述我的方法的一个参数是**错误,我的项目是在ARC模式.当为此方法编写存根以调用mock方法时,我将参数设置为可能的值.它会导致编译错误或无法匹配参数来调用mock方法. > OCMOCK_ANY > [OCMArg anyPointer] >创建一个NSError对象错误,并表示[OCMArg setTo:error]. 没有什么工作. 如何模拟这种方法?请指教. 编辑 -(id)init{ 我的方法的一个参数是**错误,我的项目是在ARC模式.当为此方法编写存根以调用mock方法时,我将参数设置为可能的值.它会导致编译错误或无法匹配参数来调用mock方法.

> Ocmock_ANY
> [OCMArg anyPointer]
>创建一个NSError对象错误,并表示[OCMArg setTo:error].

没有什么工作.

如何模拟这种方法?请指教.

编辑

-(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{}

模拟testMockMethod工作.

解决方法 您可以使用setTo:或anyPointer来转换它:
[[[mockFoo expect] andReturn:nil] someMethoDWithError:((NSError __autoreleasing **)[OCMArg anyPointer])];

要么:

NSError *error;[[[mockFoo expect] andReturn:nil] someMethoDWithError:((NSError __autoreleasing **)[OCMArg setTo:error])];

这是一个通过您发布的方法传递的测试用例:

@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
总结

以上是内存溢出为你收集整理的ios – 如何在ARC中的OCMock中模拟**参数全部内容,希望文章能够帮你解决ios – 如何在ARC中的OCMock中模拟**参数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1112522.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存