2010-03-04 10 views
9

Tengo una clase abstracta que tiene un método virtual. El método es virtual en el caso de que una implementación posterior necesite anular esa funcionalidad.Configuración de Moq para ignorar un método virtual

Sin embargo, Moq representa todos los métodos virtuales, por lo que parece que no puedo probar el código real que está escrito, y en su lugar usa la configuración de Mock para ese método (que actualmente devuelve el valor predeterminado).

Ejemplo abstracto:

public abstract SomeAbstract 
{ 
    public abstract Format(IFormatProvider provider, string format) 
    { 
      // does some stuff i need to test 
    } 
} 

Mi prueba NUnit:

[Test] 
public void Should_Set_Format_State() 
{ 
    Mock<SomeAbstract> mock = new Mock<SomeAbstract>(); 
    mock.Object.Format(CultureInfo.CurrentCulture, "format string"); 

    // do tests to make sure Format correctly changed the object's state 
} 

¿Cómo puedo configurar mi objeto de burla a dejar mi trabajo virtual Format método, sin tener que quitar virtual del método ?! Tal vez estoy abusando del concepto de burla en este caso.

+0

Pregunta interesante, ¡aprendí algo! Hurra. –

Respuesta

14

Creo que establecer "CallBase = true" en el simulacro funcionará. Consulte la sección "Personalización del comportamiento simulado" de Quick Start

+0

Vaya, soy un idiota. ¡Gracias! – HackedByChinese

Cuestiones relacionadas