es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

[OCMock][OCMVerify] ¿Por qué OCMVerify aún pasa cuando no llamo a un método?

id mockDelegate = OCMProtocolMock(@protocol(managerDelegate));
self.vc.delegate = mockDelegate;
OCMExpect([mockDelegate someMethod:OCMOCK_ANY]);

… Ejecuta algunos métodos para hacer que vc.m responda a la devolución de llamada del delegado someMethod…

OCMVerify(mockDelegate);

Implementé el método anterior y descubrí que incluso si la clase no responde al método someMethod, OCMVerify aún lo considera como aprobado. ¿Por qué?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es probable que el protocolo managerDelegate incluya el método someMethod como un método opcional, lo que significa que no se requiere que todas las clases que se ajustan a este protocolo lo implementen. Por lo tanto, si una clase no implementa someMethod, OCMProtocolMock no lanzará un error cuando se llame al método, y OCMVerify seguirá pasando porque el objeto mockDelegate se asignó correctamente a vc.delegate. Para verificar que el método fue llamado realmente, puedes usar OCMVerify con un argumento adicional que especifique el número mínimo de veces que el método debería ser llamado, de la siguiente manera: OCMVerify([mockDelegate someMethod:OCMOCK_ANY]) o OCMVerify([mockDelegate someMethod:OCMOCK_ANY] atLeastOnce) dependiendo de tus requisitos.

Comments are closed.