OCMock 方法中的存根块
Stubbing blocks in method OCMock
我在模拟我要测试的方法之一中的块时遇到了一些困难。
下面大致是我的代码的样子
- (void) startFetching:(MyParameter *) parameter
{
self.fetcher = [[MyFetcher alloc] initWithContext:xxxx andObserver:nil];
self.fetcher.parameters = @[parameter];
[self.fetcher startWithCompleteionBlock:^(id<MyOperation> _Nonnull operation) {
if(operation.errors.count > 0) {
[self.delegate failedWithError:operation.errors.firstObject];
} else{
FetcherResponse *response = [MyFetcherResponse cast:operation];
NSArray *array = response.responseArray;
if(array.count == 1) {
[self.delegate completedWithSuccess:array.firstObject];
}
}
}];
}
现在我有一个像 testStartFetching 这样的测试方法,我想测试这个方法。我不明白如何将这部分 [self.fetcher startWithCompleteionBlock:^(id<MyOperation> _Nonnull operation)
放入我的方法中,以便在成功的情况下它 return 正确的数组,在失败的情况下它 return 错误,如果我将它存根如果有错误,则调用 failedWithError:operation
,否则调用 completedWithSuccess
。
我在 objective c 中使用 OCMock 框架,我是单元测试的新手。任何帮助将不胜感激。
I 存根方法完成块 returns operation
(有错误)。然后我验证调用委托的方法 - failedWithError
使用正确的参数(错误)。
id<MyOperation> operation = [[MyClassOperaion alloc] init];
NSError *error = [NSError new];
operation.errors = @[error];
OCMStub([self.fetcher startWithCompleteionBlock:([OCMArg checkWithBlock:^BOOL(void(^passedBlock)(id<MyOperation> _Nonnull operation)) {
passedBlock(operation);
return YES;
}])]);
OCMVerify([self.delegate failedWithError:error]);
我在模拟我要测试的方法之一中的块时遇到了一些困难。
下面大致是我的代码的样子
- (void) startFetching:(MyParameter *) parameter
{
self.fetcher = [[MyFetcher alloc] initWithContext:xxxx andObserver:nil];
self.fetcher.parameters = @[parameter];
[self.fetcher startWithCompleteionBlock:^(id<MyOperation> _Nonnull operation) {
if(operation.errors.count > 0) {
[self.delegate failedWithError:operation.errors.firstObject];
} else{
FetcherResponse *response = [MyFetcherResponse cast:operation];
NSArray *array = response.responseArray;
if(array.count == 1) {
[self.delegate completedWithSuccess:array.firstObject];
}
}
}];
}
现在我有一个像 testStartFetching 这样的测试方法,我想测试这个方法。我不明白如何将这部分 [self.fetcher startWithCompleteionBlock:^(id<MyOperation> _Nonnull operation)
放入我的方法中,以便在成功的情况下它 return 正确的数组,在失败的情况下它 return 错误,如果我将它存根如果有错误,则调用 failedWithError:operation
,否则调用 completedWithSuccess
。
我在 objective c 中使用 OCMock 框架,我是单元测试的新手。任何帮助将不胜感激。
I 存根方法完成块 returns operation
(有错误)。然后我验证调用委托的方法 - failedWithError
使用正确的参数(错误)。
id<MyOperation> operation = [[MyClassOperaion alloc] init];
NSError *error = [NSError new];
operation.errors = @[error];
OCMStub([self.fetcher startWithCompleteionBlock:([OCMArg checkWithBlock:^BOOL(void(^passedBlock)(id<MyOperation> _Nonnull operation)) {
passedBlock(operation);
return YES;
}])]);
OCMVerify([self.delegate failedWithError:error]);