Para la prueba unitaria, estoy usando NUnit 2.6 y Moq 4.0. Hay un caso particular relacionado con los miembros virtuales donde los objetos proxy de Moq no retransmiten llamadas de método a la implementación real (probablemente por diseño). Por ejemplo, si tuviera una clase ...Burlando de miembros virtuales en Moq
public class MyClass {
protected virtual void A() {
/* ... */
}
protected virtual void B(...) {
/* ... */
}
}
... y utilizar para anular Moq GetSomethingElse
's A()
método en mi aparato de prueba ...
var mock = new Mock<MyClass>();
mock.Protected().Setup("A").Callback(SomeSortOfCallback);
... usando el método A
del simulacro funciona espléndidamente; sin embargo, si algo en dicho método llamaría al método no burlado B
, el método no hará nada y/o devolverá los valores predeterminados, incluso si existe una implementación real en MyClass
.
¿Hay alguna forma de evitar esto? ¿Estoy usando Moq mal?
Gracias de antemano,
Manny
¿Qué pasa si aún quieres burlarte de otros métodos? –
@LouisRhys Bastante seguro de que esto no interfiere con él: si se burla de algo explícitamente, la configuración 'CallBase' nunca entra en juego. –