A menudo encuentro en mi iPhone pruebas de unidad Objective-C que quiero anular un método de clase, p. NSUrlConnection's + sendSynchronousRequest: returningResponse: error: method.¿Cómo encontrar un método de clase en OCMock?
ejemplo simplificado:
- (void)testClassMock
{
id mock = [OCMockObject mockForClass:[NSURLConnection class]];
[[[mock stub] andReturn:nil] sendSynchronousRequest:nil returningResponse:nil error:nil];
}
Cuando se ejecuta esto, me sale:
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).
que he tenido un momento muy difícil encontrar ninguna documentación sobre esto, pero supongo que los métodos de la clase Aren' Compatible con OCMock.
Encontré este consejo después de mucha búsqueda en Google. Funciona, pero es muy engorroso: http://thom.org.uk/2009/05/09/mocking-class-methods-in-objective-c/
¿Hay alguna forma de hacerlo dentro de OCMock? ¿O alguien puede pensar en un objeto de categoría OCMock inteligente que podría escribirse para lograr este tipo de cosas?
Nueva URL de la entrada en el blog: http://thomlawrence.wordpress.com/ 2009/05/09/mocking-class-methods-in-objective-c/ – RefuX
El enlace original de la publicación de blog es bueno, el enlace de wordpress.com está muerto. –
Comenzando con la versión 2.1 de OCMock esto se admite de fábrica. Ahora puede anclar los métodos de clase de la misma forma que los métodos de instancia de stub. –