在unit testing中检查传入函数的参数值

我正在用OCMock v3做unit testing,我想testing下面这段代码:

@implementation School -(void) handleStudent:(Student*) student{ Bool result = [self checkIdentityWithName:student.name age:student.age]; ... } ... @end 

在我的下面的testing案例中,我创build了名为“John”的student实例,年龄为23岁,然后运行testing的函数:

 -(void) testHandleStudent{ Student *student = [Student initWithName:@"John" age:23]; // function under test [schoolPartialMock handleStudent:student]; // I want to not only verify checkIdentityWithName:age: get called, // but also check the exact argument is passed in. that's John 23 in this case // how to check argument ? } 

在我的testing案例中,我想validation确切的参数值传递到函数checkIdentityWithName:age: 这是名字“约翰”和23岁被使用。 如何validation在OCMock v3 ? (在其文档中没有明确的例子。

你可以这样做

 -(void) testHandleStudent{ id studentMock = OCMClassMock([Student class]); OCMStub([studentMock name]).andReturn(@"John"); OCMStub([studentMock age]).andReturn(23); [schoolPartialMock handleStudent:studentMock]; OCMVerify([schoolPartialMock checkIdentityWithName:@"John" age:23]); } 

要么

 -(void) testHandleStudent{ id studentMock = OCMClassMock([Student class]); OCMStub([studentMock name]).andReturn(@"John"); OCMStub([studentMock age]).andReturn(23); OCMExpect([schoolPartialMock checkIdentityWithName:@"John" age:23]); [schoolPartialMock handleStudent:studentMock]; OCMVerifyAll(schoolPartialMock); } 

希望这个帮助