2012-01-11 2 views
2

void를 반환하는 저장소에서 Add 메서드를 테스트하고 싶습니다. 나는 데이터베이스를 치지 않고 요소 추가를 테스트하는 것에 관심이있다. 이것이 올바른 방법입니까?Moq를 사용하여 void 반환 메소드를 모방하는 올바른 방법은 무엇입니까?

var list = new List<Foo>(); 
var repo = new Mock<IFooRepository>(); 

repo.Setup(x => x.Add(It.IsAny<Foo>())) 
      .Callback((Foo f) => 
      { 
       list.Add(f); 
      }); 

repo.Object.Add(new Foo { FooId = 1 }); 

Assert.IsTrue(list.Any(x => x.FooId == 1)); 
+0

뭔가가 내부 목록에 추가되는지 테스트하려는 것 같습니다. 좋아. 모의 객체를 사용한다면 왜 클래스에 가짜 데이터베이스를 제공하지 않을까요? – IanNorton

+0

해당 코드를 사용하면 Add 메서드가 매우 복잡한 방식으로 호출되었는지 확인하는 것입니다. –

답변

3

아니요, 여기서 테스트하는 것은 Moq 자체뿐입니다. 아래 레이어를 조롱 해 볼 수도 있습니다. 당신이 Nhibernate를 사용한다면 ISession.

관련 문제