2012-12-15 2 views
2

예외 작동하지 않는 것 방법이 작동하지 않습니다RhinoMock.BackToRecord 내가 테스트 사이에 기대를 재설정 성공적으로 다음을 사용했다

[SetUp]  
public void Setup() 
{ 
     //reset expectations for each test 
     MockRestQuestionClient.BackToRecord(BackToRecordOptions.Expectations); 
     MockRestQuestionClient.Replay(); 
} 

[Test] 
public void Test1() { 
    MyMock.Expect(t => t.Something()).Returns(someObject); 
} 

[Test] 
public void Test2() { 
    //this works when run individually, but fails if run after Test1 
    MyMock.Expect(t => t.Something()).Throw(new Exception()); 
} 

모든 아이디어를 내가 잘못 뭘하는지?

감사합니다.

답변

0

다른 테스트 케이스에 동일한 모의 (mock)를 사용하고있는 것으로 보입니다.
테스트간에 모의 테스트를 공유 할 구체적인 이유가 있습니까?

나는 당신이 Setup() 방법 (각 테스트마다 새로운 모의 객체를 생성하면 문제가 사라집니다 가정합니다.

UPDATE
시험 here 사이에 데이터를 공유 좋은 코멘트를 읽어 보시기 바랍니다.

UPDATE2
모의 수업을 설정하기 위해 기본 수업을 사용하는 경우 기본 수업 (예 : Init())에서 특정 방법을 사용하는 것이 좋습니다. thod는 속성이 [SetUp]으로 표시되어야합니다.
결과로 각 테스트 전에 Init()이 실행됩니다. 그리고 각 시험마다 신선한 모의 동물을 사용할 것입니다. 따라서 기존의 mock을 재설정 할 필요가 없습니다.

+0

좋은 코드 재사용과 같습니다. 모든 관련 테스트에서 사용하기 위해 모든 모의 객체를 설정하는 기본 테스트 클래스가 있습니다 (이 작업은 Moq에서 잘 작동하지만 Moq에는 몇 가지 기능이 없습니다). 그리고 RhinoMocks는이 특별한 경우를 제외하고는 모두 잘 작동합니다. – sydneyos

+0

여러 테스트에서 모든 모의를 설정하는 * 코드를 다시 사용하는 것이 좋습니다. 그러나 여러 테스트에서 동일한 모의 인스턴스 *를 다시 사용하는 것은 좋지 않습니다. 대답의 업데이트에서 내 제안을 참조하십시오. –

+0

예약에 대한 답변을 수락합니다. 나는 어느 쪽이든 설득력있는 주장이있는 것 같지 않습니다. mock이 모의 (mocks)가 작동하지 않기 때문에 모의 객체를 재사용하지 않는다는 주장은 그들이해야 할 일을 말하게하는 강력한 근거가되어서는 안된다. 모의는 다시 설정할 수 있어야하며, 사실이 이상한 상황을 제외하고는 모릅니다. 그래서, 원래의 질문에 답이없고, 아마 Ayende 만 대답 할 수 있습니다. – sydneyos

관련 문제