【发布时间】:2016-05-31 14:36:43
【问题描述】:
我正在使用OCMock 3 在我的 iOS 项目中进行单元测试。
OCMock 被称为 iOS 的一个很棒的单元测试库,但是我上面链接的 OCMock 文档并没有明确说明如何检查函数的返回值,它一直都在说明如何存根函数返回并验证它。 但我不想存根该函数返回,我需要检查真正的返回值。
例如,我想对我的School 类的一个函数进行单元测试:
@implementation School
...
- (void) checkStudents {
BOOL isOnVacation = [[Coordinator sharedInstance] checkCalendar];
if (!isOnVacation) {
takeLecture();
}
}
@end
我的测试用例:
- (void) testCheckStudents {
// create a partially mocked 'Coordinator' instance
id coordinatorMock = [OCMockObject partialMockForObject:[Cooridnator sharedInstance]];
// run the method under test
[schoolToTest checkStudents];
// I want to check not only '[[Coordinator sharedInstance] checkCalendar]' is invoked, but also check its return value is YES. How to check this in OCMock?
OCMVerify([coordinatorMock checkCalendar]);
}
我不想存根[[Coordinator sharedInstance] checkCalendar] 的返回值,而是运行真正的实现。
我不仅要检查[[Coordinator sharedInstance] checkCalendar]是否被调用,还要检查它的返回值是YES。如何在 OCMock 中检查这个?
(通过它的文档,我只能看到存根函数在此处和那里返回,然后验证该函数是否被调用。我是否遗漏了它的文档中的某些内容?)
【问题讨论】:
标签: ios objective-c unit-testing ocmock