2009-05-23 8 views
3

Aide, est-ce que quelqu'un peut vous aider et vous expliquer le but de la portée Rhino Mocks 'Record'? J'ai supposé que l'ensemble des attentes dans la portée serait seulement vérifié, mais il semble que dès que vous créez l'objet fantaisie, Rhino Mocks est en mode 'enregistrement', donc je ne suis plus sûr du but de l'enregistrement portée.Rhino Mocks Syntaxe de lecture des enregistrements

Voici un exemple, j'ai:

private static void SomeTest() 
    { 
     MockRepository mockRepository = new MockRepository(); 
     ISomeInterface test = mockRepository.StrictMock<ISomeInterface>(); 

     test.Bar(); 

     using (mockRepository.Record()) 
     { 
      Expect.Call<string>(test.GetFoo()).Return("Hello"); 
     } 

     using (mockRepository.Playback()) 
     { 
      test.GetFoo(); 
     } 
    } 

    public interface ISomeInterface 
    { 
     string GetFoo(); 
     void Bar(); 
    } 

Ce test échouerait parce qu'il ya une attente que Bar devrait être appelé. Est-ce parce que j'ai créé un StrictMock et non un Dynamic?

Répondre

5

Ce test échouera parce qu'il n'y a pas d'attente qui serait appelé Bar(), mais il était appelé.

Pour répondre à votre question, oui, c'est parce que vous avez un faux réglementaire. Si vous passez à un DynamicMock, il ignore tout sauf les attentes que vous avez réellement définies. Je recommande fortement d'utiliser DynamicMocks autant que possible, car StrictMocks sont en fait assez cassants et ont tendance à être beaucoup de tracas. Comme pour Record/Replay, il n'est pas automatiquement en mode Record si vous utilisez un MockRepository concret. C'est juste la nature du StrictMock qui cherche tout ce qui s'appelle en dehors des attentes, peu importe quand.

+0

Merci pour l'aide. Je comprend maintenant. –