2010-12-09 39 views
0

Comment puis-je écrire ce simple test basé sur l'enregistrement et la relecture dans le cadre de la syntaxe AAA avec Rhino Mocks?Comment puis-je écrire ce test simple dans la syntaxe AAA avec le framework Rhino Mocks?

public interface IStudentReporter 
{ 
     void PrintStudentReport(List<IStudent> students); 
     List<IStudent> GetUnGraduatedStudents(List<IStudent> students); 
     void AddStudentsToEmptyClassRoom(IClassRoom classroom, List<IStudent> 
} 




[Test] 
    public void PrintStudentReport_ClassRoomPassed_StudentListOfFive() 
    { 
     IClassRoom classRoom = GetClassRoom(); // Gets a class with 5 students 

     MockRepository fakeRepositoery = new MockRepository(); 
     IStudentReporter reporter = fakeRepositoery 
            .StrictMock<IStudentReporter>(); 

     using(fakeRepositoery.Record()) 
      { 
       reporter.PrintStudentReport(null); 

       // We decalre constraint for parameter in 0th index 
       LastCall.Constraints(List.Count(Is.Equal(5))); 
      } 

     reporter.PrintStudentReport(classRoom.Students); 
     fakeRepositoery.Verify(reporter); 
     } 

Répondre

0

Ok. J'ai trouvé le chemin:

[Test] 
public void PrintStudentReport_ClassRoomPassed_StudentListOfFive_WithAAA() 
{ 
    //Arrange 
    IClassRoom classRoom = GetClassRoom(); // Gets a class with 5 students 
    IStudentReporter reporter = MockRepository.GenerateMock<IStudentReporter>(); 

    //Act 
    reporter.PrintStudentReport(classRoom.Students); 

    //Assert 
    reporter 
     .AssertWasCalled(r => r.PrintStudentReport(
         Arg<List<IStudent>> 
           .List.Count(Is.Equal(5))) 
         ); 
} 
+3

Je pense que vous devriez utiliser 'GenerateStub' ici. Vous n'avez besoin de 'GenerateMock' que si vous voulez utiliser' .Expect'. Voir les conseils de l'utilisateur sur la [différence entre GenerateMock et GenerateStub] (http://www.ayende.com/wiki/Rhino+Mocks+3.5.ashx) (bien que pour être honnête, la page dans son ensemble est aussi un peu confuse. Je me réfère à la partie où il est dit "Dans la plupart des cas, vous devriez préférer utiliser des stubs.Seulement lorsque vous testez des interactions complexes, je recommande d'utiliser des objets fictifs.") –