Я новичок в OCMock, поэтому я, возможно, пропустил что-то простое, но моя проблема в том, что я не могу заглушить метод class
на макет, который я создал. Вот как я устанавливаю вверх часть моего теста:Stubbing метод «класс» с OCMock
// 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
. Я пытался использовать частичный макет, но это, похоже, не помогло.
Edit:
Вот упрощенный тест, который не пройдет:
// 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