1
我是OCMock的新手,所以我可能忽略了一些简单的东西,但是我的问题是我似乎无法在我创建的模拟中存根方法class
。下面是我如何设置我的测试的一部分:用OCMock剔除“class”方法
// Unit Test
id mock = [OCMockObject mockForClass:[MySubClass class]];
[[[mock stub] andReturn:[MySubClass class]] class];
...
[someObject someMethodWithParam:mock];
...
这里是我的执行someMethodWithParam:
:
// Implementation
- (void)someMethodWithParam:(MySuperClass *)param {
[[param class] someClassMethod];
}
的问题是,[param class]
回报OCClassMockObject
代替MySubClass
。当调用someClassMethod
时,这会导致“无法识别的选择器发送到类”错误。我试过使用部分模拟,但似乎没有帮助。
编辑:
这里有一个简单的测试,将不会通过:
// Unit Test
id mock = [OCMockObject mockForClass:[MySubClass class]];
[[[mock stub] andReturn:[MySubClass class]] class];
XCTAssertEqual([mock class], [MySubClass class], @"The mock's class should be MySubClass");
OCMockObject + mockForClass:也可以在这里工作,以便在测试不需要它的情况下为您节省创建对象实例的空间。 – ImHuntingWabbits