No se puede burlar el método de class en CLLocationManager utilizando OCMock con iOS7

Estoy intentando escribir un XCTest (iOS7, XCode5) junto con OCMock.

Tengo una class que implementa el protocolo CLLocationManagerDelegate, y tiene una propiedad que es una instancia de un CLLocationManager. (Suministro la instancia del CLLocationManager al método my initializer, para que pueda inyectarlo en time de ejecución o testing).

Al probar la class de delegado, creo un CLLocationManager simulado.

En una testing, quiero lograr algo como esto:

[[[[mockLocationManager stub] classMethod] andReturnValue:kCLAuthorizationStatusDenied] authorizationStatus]; result = [delegateUnderTest doMethod]; //Do asserts on result etc etc 

El problema es que XCode se está quejando de mi código.

 test.m:79:68: Implicit conversion of 'int' to 'NSValue *' is disallowed with ARC test.m:79:68: Incompatible integer to pointer conversion sending 'int' to parameter of type 'NSValue *' 

kCLAuthorizationStatusDenied es un int entiendo (como se define en un TypeDef). Entonces, no puedo usar

 [[[[mockLocationManager stub] classMethod] andReturn:kCLAuthorizationStatusDenied] authorizationStatus]; 

que esperaría un object ('yReturn' es un 'id').

¿Algunas ideas?

Necesita NSValue el valor en una instancia de NSValue y no pasar el valor de primitiva. Por ejemplo:

 [[[mockLocationManager stub] andReturnValue:@(kCLAuthorizationStatusDenied)] authorizationStatus]; 

Lo anterior hace uso de la syntax literal de Objective-C para NSNumber s. Además, omití la llamada classMethod anterior CLLocationManager no tiene un método de authorizationStatus .

Se puede encontrar más soporte para esto en el website de OCMock :

Si el método devuelve un tipo primitivo entonces yReturnValue: debe usarse con un argumento de valor. No es posible pasar types primitivos directamente.

Eso es lo que le dice el error del comstackdor: que está pasando un int lugar de una instancia de NSValue .