2010-02-03 4 views
2

발표자의 메서드에서 호출 메서드를 기대합니다.이 메서드는 또한 조롱되지 않은 서비스 메서드에서 추출 된 데이터를 전달합니다.이 서비스 메서드는 기본적으로 데이터를 가져옵니다. 데이터베이스 및 반환 목록에서 부탁해 (SQL에 LINQ를 사용하여) 나는 시험이를 쓸 때코뿔소 모의 문제를 파악할 수 없습니다

List<customers> cus = expecteddata; 
view.AssertWasCalled(v => v.InitializeCustomersForSelectedCity(cus));  

Rhino.Mocks.Exceptions.ExpectationViolationException: ICustomerListView.InitializeCustomersForSelectedCity(System.Collections.Generic.List`1[DAL.Customer]); Expected #1, Actual #0. 

나는 발표자에 테스트입니다 코드

public void HandleSelectedCity(int City) 
    { 
     selectedCity = City ; 
     _custometListForm.InitializeCustomersForSelectedCity(_CustomerListService.GetActiveCustomersForSelectedCity(selectedCity));    
    } 

I 인수, 시험 작동을 무시하는 경우 괜찮습니까 무엇이 문제 일 수 있습니까?

답변

3

어설 션은 단위 테스트에 정의 된 변수 인 cus을 기반으로 기대치를 만듭니다. 그러나 InitializeCustomersForSelectedCity가 호출되면 GetActiveCustomersForSelectedCity - 다른 인스턴스 인 List<customers>의 결과로 호출됩니다.

예상 설정은 기본적으로 예상 인스턴스와 실제 인스턴스에서 object.Equals 작업을 수행합니다. 귀하의 경우, 그들은 다르다, 그리고 expectaction 만족하지 않습니다.

List<customers>을 받아들이는 기대를 완화해야하거나 GetActiveCustomersForSelectedCity도 모의 테스트해야 단위 테스트에서 반환 된 결과를 정의 할 수 있습니다.

+0

고맙습니다. 나는 테스트를 2로 나누기로 결정했습니다 - 상호 작용 테스트가 호출되었습니다. 메소드가 호출되었습니다. 그리고 서비스 메소드에 대한 또 다른 테스트 –

관련 문제