Rhino spottet bestellt Antwort, throw Ausnahme Problem

stimmen
0

Ich versuche, einige Wiederholungslogik zu implementieren, wenn es eine Ausnahme in meinem Code ist. Ich habe den Code geschrieben und jetzt versuche ich Rhino Mocks zu bekommen, um das Szenario zu simulieren. Der jist des Codes ist die folgende:

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);
            }
        }
    }

Was zu geschehen scheint, ist, dass die Ausnahme jedes Mal, anstatt nur einmal geworfen wird. Was soll ich das Setup verändern zu sein?

Veröffentlicht am 19/09/2008 um 17:40
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
2

Sie müssen Expect.Call statt SetupResult verwenden:

        using (repo.Record())
    {
        Expect.Call(provider.Execute(23))
                   .IgnoreArguments()
                   .Throw(new ApplicationException("Dummy exception"));

        Expect.Call(provider.Execute(23))
                   .IgnoreArguments()
                   .Return("result");
    }

Das Rhino.Mocks Wiki sagt,

Mit SetupResult.For () umgeht vollständig die Erwartungen Modell in Rhino Mocks

Beantwortet am 19/09/2008 um 19:12
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more