Pregunta

He estado usando RhinoMocks últimamente, pero sigo corriendo en un problema. Si rompo en el depurador y pasar por encima de código mientras una maqueta está en modo de grabación, me acaban de conseguir una excepción en la línea de:

System.InvalidOperationException: Previous method 'SuchAndSuch.ToString();'  
requires a return value or an exception to throw.

Pero si ejecuto el mismo código sin romper el depurador se ejecutará con éxito y crear la maqueta.

Estoy bastante seguro de que la razón de esto es que el depurador llama ToString () en los objetos para mostrarlos en los locales y otras ventanas del reloj. Pero dado que la maqueta está en modo de grabación RhinoMocks considera una llamada a ToString () para ser un montaje de las expectativas que luego no es del todo correcta. Obviamente, esto sólo ocurre con los simulacros parciales en clases concretas. Se burla contra las interfaces no presentan este comportamiento.

que otras personas con este problema? ¿Hay algún remedio simple? ¿Los otros marcos, como moq o Typemock tienen este problema?

Gracias,

~ Justin

¿Fue útil?

Solución

puedo recordar tener un problema similar con NMock hace muchos años. Básicamente, este problema se produce precisamente porque el depurador invoca y muestra las propiedades utilizando el método ToString (a menos que utilice DebuggerDisplayAttribute o similar).

Esto puede ser especialmente problemático si utiliza burla estrictos , ya que sólo permiten invocar un miembro de un número especificado de veces, y el depurador interfiere con esto. El uso de burla de sueltos direcciones de esto (y muchos otros) problemas.

También es posible que desee alejarse del mecanismo de grabación / reproducción de burla de Rhino y comenzar a utilizar el nuevo y mucho mejor lambda sintaxis .

Moq utiliza la sintaxis lambda (casi) exclusivamente, y nunca he tenido este tipo de problemas con él -. Pero de nuevo, no me depurar mucho en estos días, ya que las pruebas unitarias se han convertido en un sustituto para la depuración

Sin embargo, otra solución es simplemente para ocultar el Autos y Los locales ventanas del depurador.

Otros consejos

Como sugiere Marcos, este problema debería desaparecer si deja de usar el enfoque de registros de repetición a verificar y comenzar a usar los talones con el enfoque recomendado AAA (organizar, actuar, hacer valer) en su lugar.

He tratado de explicar la diferencia y cómo hacerlo tanto con burla de Rhino en este entrada de blog .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top