j'ai donc une classe avec une méthode comme suit:Comment puis-je tester l'unité d'un détail de mise en œuvre comme la mise en cache
public class SomeClass
{
...
private SomeDependency m_dependency;
public int DoStuff()
{
int result = 0;
...
int someValue = m_dependency.GrabValue();
...
return result;
}
}
Et j'ai décidé que, plutôt que d'appeler m_dependency.GrabValue()
chaque fois, je veux vraiment cache la valeur en mémoire (c'est-à-dire dans cette classe) puisque nous aurons toujours la même valeur à chaque fois (la dépendance se déclenche et récupère des données dans une table qui ne change pratiquement jamais).
J'ai cependant rencontré des problèmes en essayant de décrire ce nouveau comportement dans un test unitaire. Je l'ai essayé ce qui suit (j'utilise NUnit avec 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();
}
Cela ne fonctionne pas; ce test passe même sans introduire de modifications à la fonctionnalité. Qu'est-ce que je fais mal?
Désolé de poser la question, mais pourquoi tester quelque chose qui est un détail d'implémentation? – Robert