2014-01-24 2 views
1

응용 프로그램에서 비동기 적으로 실행되도록 WCF 호출을 변환하여 데이터를 가져 오는 동안 GUI가 응답하도록합니다. 대부분이 메서드를 사용하여 ViewModel의 속성을 채 웁니다.테스트 작업 기반 WCF 호출

는 예를 들어, 여기 내 과거와 현재 코드입니다 : 내 단위 테스트에서, 기본적으로

//Doesn't set DataItems when LoadDataItems() is called 
myWcfServiceClient.Stub(async client => await client.SelectDataItemsAsync()).Return(new Task<List<DataItemDto>>(() => new List<DataItemDto> { testDataItem })); 

//NullReferenceException on SelectDataItemsAsync() 
myWcfServiceClient.Stub(client => client.SelectDataItemsAsync().Result).Return(new List<DataItemDto> { testDataItem }); 

을 어느 DataItems이 설정되지 않은 : 또한

private async Task LoadDataItems() 
{ 
    //DataItems = Service.SelectDataItems(); 

    DataItems = await Service.SelectDataItemsAsync(); 
} 

, 여기에 사용 RhinoMocks는 몇 가지 테스트 코드입니다 또는 결과를 가짜로 만들려고 NullReferenceException이 발생합니다. 이는 무엇보다 RhinoMocks에 대한 많은 질문 ... RhinoMocks에서

답변

1

, 다음과 같이 그래서, 내 테스트 코드는 결과를 설정합니다 Task.FromResult(...)

와 함께 작업 기반 작업에 Result을 정의 아마도 :

myWcfServiceClient.Stub(client => client.SelectDataItemsAsync()).Return(Task.FromResult(new List<DataItemDto> { testDataItem })); 

간단하고 멋진 작품!

관련 문제