18

我有一个在要测试的类的 .m 文件中声明的私有属性,我们称之为 ClassUnderTest。ClassUnderTest 实例化 ClassToBeMocked 的一个实例。如何使用 OCMock 模拟 ClassToBeMocked 的实例并将其分配给 ClassUnderTest?

4

2 回答 2

51

在您的测试类中重新声明该属性。您可以对私有方法执行相同的操作。在 ClassUnderTestTest.m 中:

@interface ClassUnderTest ()

@property(retain)ClassToBeMocked *instanceToBeMocked;

-(void)somePrivateMethod;

@end
于 2012-08-10T16:59:39.383 回答
1

下面的工作吗?

id classUnderTest = ... // get from somewhere
id mock = [OCMockObject mockForClass:[ClassToBeMocked class]];
[classUnderTest setValue:mock forKey:@"nameOfThatPrivateProperty"];

不完全确定您是否可以设置这样的私有属性。我认为这取决于它是什么样的财产。

于 2012-08-10T11:04:24.083 回答