mocking - ¿Cuáles son las capacidades de Moq y Rhino.mocks?
rhino-mocks typemock (5)
No puedo encontrar una comparación característica por característica específica de Moq y Rhino. Todas las preguntas son "¿Qué te gusta más y por qué?", O "Así es como haces un simple simulacro en rhino y cómo se hace en moq".
No puedo encontrar una comparación profunda en ninguna parte. Soy consciente de las diferencias de sintaxis, no estoy buscando respuestas sobre eso. Estoy buscando una comparación de capacidades . Por ejemplo:
Rhino tiene Expect.On () para burlarse de rosca. ¿Puede Moq hacer esto?
¿Qué pasa con Multi-mocking (implementando múltiples interfaces con un simulacro). ¿Puede Moq hacer esto?
Creo que Moq ahora puede burlarse de los miembros protegidos. ¿Puede Rhino hacer esto?
Editar : terminé mirando algunos de los otros frameworks .Net también.
Gracias a aquellos que respondieron en las últimas semanas. Terminé escribiendo una publicación de blog sobre mis hallazgos, ya que tuve que investigar tanto que parecía que podía resumirlos con la esperanza de ayudar a otros. El cuadro que publiqué organiza mis hallazgos:
Una advertencia, que mencioné en la publicación del blog, es que el gráfico es útil para verificar las capacidades, pero las ventajas reales de la mayoría de los marcos son sus características únicas. Elegí Moq al final debido a la API fácil de usar. Además, toda la información está sujeta a errores y cambios. Si no está de acuerdo con algo en el cuadro, publique un comentario.
No soy un experto de ninguna manera, pero creo que Rhino agregó parte de la sintaxis de Moq para que la curva de aprendizaje se haya reducido a lo que esperaría con MoQ. Trabajé con ambos con pruebas y parte de la sintaxis era casi idéntica. Inicialmente iría con MoQ porque era más fácil, pero luego mi amigo me mostró las últimas actualizaciones y lo similares que eran. Solo dejándote saber.
Podría agregar "Verificación del comportamiento" en estos. Esa parece ser la mayor limitación de Moq, que Rhino (que no está seguro acerca de los demás) no tiene ningún problema.
Rhino tiene GetArgumentsForCallsMadeOn () que IMO hace que sea más fácil verificar argumentos en algunos casos.
Solo para completar, notare que ahora hay NMock3 en CodePlex . Tiene una migración fácil desde NMock2, simplemente reemplace la referencia a NMock2.dll con una referencia a NMock3.dll. Agrega seguridad de tipo y soporte para refactorización.