2008-09-19 16 views
0

J'essaye d'implémenter une certaine logique de réessayer s'il y a une exception dans mon code. J'ai écrit le code et maintenant j'essaie de faire en sorte que Rhino Mocks simule le scénario. Le jist du code est le suivant:Rhino mocks a ordonné réponse, jetez le problème d'exception

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 passer est que l'exception est jeté chaque fois au lieu d'une seule fois. Que devrais-je changer la configuration à être?

Répondre