2010-12-09 26 views
0

Rhino MocksフレームワークでAAA構文でこの単純なレコードとリプレイに基づいたテストを書く方法を教えてください。この簡単なテストをRhino MocksフレームワークでAAA構文で書く方法はありますか?

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

答えて

0

私は方法を見つけました:

[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

ここで 'GenerateStub'を使うべきだと思います。 '.Expect'を使いたい場合は' GenerateMock'が必要です。 [GenerateMockとGenerateStubの違いについてのユーザーガイダンスを参照してください(http://www.ayende.com/wiki/Rhino+Mocks+3.5.ashx)(ただし、ページ全体がちょっと混乱しています。私は、「ほとんどの場合、スタブを使用する方がよいでしょう。複雑なやりとりをテストしている場合にのみ、模擬オブジェクトを使用することをお勧めします。」) –

関連する問題