Rhino se moque de la réponse ordonnée, pose un problème d'exception
-
01-07-2019 - |
Question
J'essaie d'implémenter une logique de nouvelle tentative s'il existe une exception dans mon code. J'ai écrit le code et j'essaie maintenant de faire simuler le scénario à Rhino Mocks. Le code du code est le suivant:
class Program
{
static void Main(string[] args)
{
MockRepository repo = new MockRepository();
IA provider = repo.CreateMock<IA>();
using (repo.Record())
{
SetupResult.For(provider.Execute(23))
.IgnoreArguments()
.Throw(new ApplicationException("Dummy exception"));
SetupResult.For(provider.Execute(23))
.IgnoreArguments()
.Return("result");
}
repo.ReplayAll();
B retryLogic = new B { Provider = provider };
retryLogic.RetryTestFunction();
repo.VerifyAll();
}
}
public interface IA
{
string Execute(int val);
}
public class B
{
public IA Provider { get; set; }
public void RetryTestFunction()
{
string result = null;
//simplified retry logic
try
{
result = Provider.Execute(23);
}
catch (Exception e)
{
result = Provider.Execute(23);
}
}
}
Ce qui semble se produire, c’est que l’exception est levée à chaque fois au lieu d’une seule fois. Que dois-je changer pour que la configuration soit?
La solution
Vous devez utiliser Expect.Call au lieu de SetupResult:
using (repo.Record())
{
Expect.Call(provider.Execute(23))
.IgnoreArguments()
.Throw(new ApplicationException("Dummy exception"));
Expect.Call(provider.Execute(23))
.IgnoreArguments()
.Return("result");
}
Le wiki de Rhino.Mocks dit:
Utilisation de SetupResult.For () contourne le modèle des attentes dans Rhino Mocks
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow