Entiendo que puedo probar que se producirá una llamada al método si llamo a un método de nivel superior, es decir:
public abstract class SomeClass()
{
public void SomeMehod()
{
SomeOtherMethod();
}
internal abstract void SomeOtherMethod();
}
Quiero probar que si llamo SomeMethod()
, espero que SomeOtherMethod()
se llame.
¿Estoy en lo cierto al pensar que este tipo de prueba está disponible en un marco burlón?
No, las pruebas simuladas suponen que está utilizando ciertos patrones de diseño comprobables, uno de los cuales es la inyección. En su caso, estaría probando
SomeClass.SomeMethod
ySomeOtherMethod
debe implementarse en otra entidad que necesita ser interconectada.Tu
Someclass
constructor se vería asíNew(ISomeOtherClass)
. Luego, se burlaría de élISomeOtherClass
y establecería la expectativaSomeOtherMethod
para que se llame y verificara la expectativa.fuente
Aunque estoy de acuerdo en que la respuesta de @ Paul es el camino recomendado, solo quiero agregar un camino alternativo proporcionado por
moq
uno mismo.Dado que
SomeClass
esabstract
de hecho es mockable, peropublic void SomeMehod()
no lo es. El punto es encontrar la manera de burlarse y de alguna manera invocar ese método y luego usarCallBase
propagar la llamada alSomeOtherMethod()
. Puede sonar como un truco, pero en esencia es simple. Podría usarse en el caso si la refactorización propuesta no es posible.Luego, puede configurar
DummyMethod()
para propagar la llamada configurando elCallBase
indicador.fuente