在单元测试中捕获多个参数
capture multiple arguments in unit test
我正在使用 OCMock 3 进行单元测试。我有一个名为 processInfo
的非常简单的函数来测试:
@implementation MyService
// in my test case, I want to test this function
-(void) processInfo{
...
[self handleDataWith:infoData name:someName];
}
-(void) handleDataWith:(NSData*)data name:(NSString*)name{
...
}
我的测试用例应该是这样的来捕获参数(受 this answer 启发):
-(void) testProcessInfo {
id serviceMock = [OCMockObject mockForClass:[MyService class]];
// Wow!Wow! wait, the answer I linked above only talk about how to capture a single argument,
//BUT I have two arguments to capture, how to do then?
OCMExpect([serviceMock handleDataWith:[OCMArg checkWithBlock:^(id value){
// Capture argument here...but what about several arguments?
}]]);
我上面链接的答案告诉了如何使用 [OCMArg checkWithBlock:^(id value)]
来捕获单个参数,但我想捕获两个参数。那怎么办呢?
一般来说,我很难在互联网上找到关于如何 在使用 OCMock v3 的单元测试中捕获多个参数 的详细记录方式.任何人都知道如何做到这一点?
正如我在对您的另一个问题 (Check argument value passed into function in unit test) 的回答的评论中提到的,您必须使用 andDo
.
我正在使用 OCMock 3 进行单元测试。我有一个名为 processInfo
的非常简单的函数来测试:
@implementation MyService
// in my test case, I want to test this function
-(void) processInfo{
...
[self handleDataWith:infoData name:someName];
}
-(void) handleDataWith:(NSData*)data name:(NSString*)name{
...
}
我的测试用例应该是这样的来捕获参数(受 this answer 启发):
-(void) testProcessInfo {
id serviceMock = [OCMockObject mockForClass:[MyService class]];
// Wow!Wow! wait, the answer I linked above only talk about how to capture a single argument,
//BUT I have two arguments to capture, how to do then?
OCMExpect([serviceMock handleDataWith:[OCMArg checkWithBlock:^(id value){
// Capture argument here...but what about several arguments?
}]]);
我上面链接的答案告诉了如何使用 [OCMArg checkWithBlock:^(id value)]
来捕获单个参数,但我想捕获两个参数。那怎么办呢?
一般来说,我很难在互联网上找到关于如何 在使用 OCMock v3 的单元测试中捕获多个参数 的详细记录方式.任何人都知道如何做到这一点?
正如我在对您的另一个问题 (Check argument value passed into function in unit test) 的回答的评论中提到的,您必须使用 andDo
.