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