2010-01-21 3 views
2

방금 ​​현재 프로젝트에 대한 BDD를 탐색하기 시작했습니다. 좋은 테스트 결과를 얻으려면 mspec과 함께 moq를 사용하고 있습니다. 그러나, 내가 뭘하려고하는지에 대한 충분한 예제를 찾을 수 없습니다. 아마도 잘못된 접근법을 사용하고 있거나 구문을 충분히 이해하지 못했을 수 있습니다. 조언 해주십시오.moq와 mspec (BDD 스타일)을 사용하는 두 개체 목록 비교 방법

문제는 클래스에 속성이 설정되었는지 확인하려고하는 것입니다. 이 속성은 개체 목록이며 각 개체가 예상 개체와 동일한 값을 갖고 있는지 확인하려고합니다.

그래서 초기 소재지를

public class Data 
{ 
    int a;  
} 

public class DataViewer : IDataViewer 
{ 
    public List<Data> dataList {get;set;} 
} 

public interface IDataViewer 
{ 
    public List<Data> dataList {get;set;} 
} 

나는이

class when_refreshing_data_list : Context 
{ 
    Because .... =() => 
    { 
     .... // process the datalist 
    } 

    ThenIt should_set_the_data_list =() => 
    { 
     List<DataList> expectedDataList = new List<DataList>(); 
     expectedDataList.add() // add some expected values to the datalist 
     ... 

     // problem is here in comparing two List<DataList> 
     _mockDataViewer.VerifySet(f => f.dataList = expectedDataList) 
    } 
} 

public abstract class Context 
{ 
    Establish context =() => 
    { 
     _mockDataViewer = new Mock<IDataViewer>(); 
    } 
} 

가 어떻게이 비교를 수행 할 다음을 수행 mspec와 MOQ를 사용하고 주어진? 운영자 재정의를 사용할 수 있습니까? 그렇다면 어떻게? 나는 람다의 오른쪽에 식 본문을 넣으려고했지만 "문 본문이있는 람다 식은 식 트리로 변환 될 수 없다"는 말만들을 수 있습니다.

어떤 도움을 주시면 감사 :

답변

1

당신이 데이터 객체의 equals 메소드를 오버로드 된 적이 있습니까?

dataList와 expectedDataList를 비교할 때이 값이 자동으로 호출됩니다.

+0

awesome! 이 일했다! – Joe