Как заглушить метод класса в OCMock?

Я часто нахожу в своих модульных тестах Objective-C iPhone, что я хочу заглушить метод класса, например, NSUrlConnection's + sendSynchronousRequest: returningResponse: error: метод.

Упрощенный пример:

- (void)testClassMock
{
    id mock = [OCMockObject mockForClass:[NSURLConnection class]];
    [[[mock stub] andReturn:nil] sendSynchronousRequest:nil returningResponse:nil error:nil];
}

При запуске этого я получаю:

Test Case '-[WorklistTest testClassMock]' started.
Unknown.m:0: error: -[WorklistTest testClassMock] : *** -[NSProxy doesNotRecognizeSelector:sendSynchronousRequest:returningResponse:error:] called!
Test Case '-[WorklistTest testClassMock]' failed (0.000 seconds).

Мне было очень трудно найти какую-либо документацию по этому вопросу, но я предполагаю, что методы класса не поддерживаются OCMock.

Я нашел этот совет после большого количества Google. Это работает, но очень громоздко:http://thom.org.uk/2009/05/09/mocking-class-methods-in-objective-c/

Есть ли способ сделать это в OCMock? Или кто-то может придумать умный объект категории OCMock, который может быть написан для выполнения подобных задач?

Ответы на вопрос(5)

Ваш ответ на вопрос