2011-08-31 2 views
0

나는 전에이 작업을 수행 했으므로 마음을 잃어 버렸습니다. 바라건대 당신 중 하나가 올바른 방향으로 나를 가리킬 수 있습니다.Rhino Mock의 목록으로 테스트 속성 설정

기본적으로 발표자가 개체 목록을 사용하여 속성을 올바르게 설정하고 있는지 테스트하고 싶습니다. 예 : 나는 DTO 작업 목록의 그 내용을 시험 할 필요가

... 
var dtos = new List<ComplexDto>(); 
dtos.add(new ComplexDto(){name="test name", description="this is some description"} 
view.dto = dtos; 
... 

: 그것은 같은 목록을 설정하는 발표자 내

public ComplexDto{ 
    public string name{get;set;} 
    public string description{get;set;} 
} 

public interface ITestView{ 
IList<ComplexDto> dto{get;set;} 
} 

.

나는 GetArgumentsForCallsMadeOn을 시도했지만 속성과 함께 작동하지 않는다고 생각합니다.

도움 주셔서 감사합니다.

답변

0

편집

이 그것을 수행해야합니다

var view = MockRepository.GenerateMock<ITestView>(); 
var dtos = new List<ComplexDto>(); 
dtos.Add(new ComplexDto() {name = "test name", description = "this is some description"}); 

List<ComplexDto> passedIn; 
view.Expect(v => v.dto).SetPropertyWithArgument(dtos).WhenCalled(mi => passedIn = (List<ComplexDto>) mi.Arguments[0]); 

view.dto = dtos; 
view.VerifyAllExpectations(); 
+0

를 불행하게도, 실제로 목록의 내용을 확인하지 않습니다. List가 동일한 참조 객체인지 확인합니다. 정확히 동일한 ComplexDto 값을 포함하는 두 개의 개별 목록 개체를 만드는 경우 실패합니다. 목록의 내용을 비교하여 값이 동일한 지 확인해야합니다. ComplexDto는 btw가 해시와 평등을 비교하여 평등을 올바르게 비교하는지 확인합니다. – Chris

+0

업데이트 된 답변보기 "WhenCalled"를 사용하여 속성 설정자에게 전달 된 인수를 가져옵니다. 이제 "passedIn"에서 필요한 모든 검증을 수행 할 수 있습니다. – PatrickSteele

+0

매력처럼 작동합니다. 감사! – Chris

관련 문제