使用OCMOCK创建具有值的虚拟对象

时间:2016-08-25 05:44:25

标签: ios objective-c unit-testing ocmock

这是我第一次尝试使用OCMOCK框架来测试我的iOS应用程序,我对此感到困惑。

假设我有一个名为School的类名,我想测试它。这门课包含学生。假设我想通过添加学生来启动学校,所以我做了这样的事情School *school = [School alloc] initWithOneStudent:student];

现在学生班就是这样。

@interface Student : NSObject 
@property (nonatomic, strong) NSString *firstName;
@property (nonatomic, strong) NSString *lastName;

@end

现在我如何在我的测试用例中获取一个学生对象,当我模拟它以将其传递给firstName

时,该对象具有lastNameinitWithOneStudent的一些值

我刚刚编写了这个例子,请原谅,如果你不喜欢这个例子。

1 个答案:

答案 0 :(得分:0)

对于您的测试用例,您可以将其设置为如下

- (void)testCase {
    id mockStudent = OCMClassMock([Student class]);
    OCMStub([mockStudent firstName]).andReturn(@"firstName");
    OCMStub([mockStudent lastName]).andReturn(@"lastName");

    School *school = [School alloc] initWithOneStudent:mockStudent];

    XCTAssertNotNil(school);
    XCTAssertEqual(school.student.firstName, @"firstName");
    XCTAssertEqual(school.student.lastName, @"lastName");
}