así que tengo una clase con un método de la siguiente manera:¿Cómo se prueba la unidad de un detalle de implementación, como el almacenamiento en caché
public class SomeClass
{
...
private SomeDependency m_dependency;
public int DoStuff()
{
int result = 0;
...
int someValue = m_dependency.GrabValue();
...
return result;
}
}
Y he decidido que en lugar de llamar a m_dependency.GrabValue()
cada vez, realmente quiero caché el valor en la memoria (es decir, en esta clase) ya que vamos a obtener el mismo valor cada vez de todos modos (la dependencia se desactiva y toma algunos datos de una tabla que casi nunca cambia).
Sin embargo, he tenido problemas tratando de describir este nuevo comportamiento en una prueba unitaria. He intentado lo siguiente (estoy usando NUnit con RhinoMocks):
[Test]
public void CacheThatValue()
{
var depend = MockRepository.GeneraMock<SomeDependency>();
depend.Expect(d => d.GrabValue()).Repeat.Once().Return(1);
var sut = new SomeCLass(depend);
int result = sut.DoStuff();
result = sut.DoStuff();
depend.VerifyAllExpectations();
}
Sin embargo, esto no funciona; esta prueba pasa incluso sin introducir ningún cambio en la funcionalidad. ¿Qué estoy haciendo mal?
Perdón por hacer la pregunta, pero ¿por qué probar algo que es un detalle de implementación? – Robert