Я конвертирую вызовы WCF, которые я делаю в приложении, для асинхронного запуска, чтобы гарантировать, что графический интерфейс реагирует, когда он получает данные. В основном я использую эти методы для заполнения свойств ViewModel.Тестирование вызова WCF на основе задачи
Например, вот мой старый и новый код:
private async Task LoadDataItems()
{
//DataItems = Service.SelectDataItems();
DataItems = await Service.SelectDataItemsAsync();
}
Кроме того, здесь какой-то тестовый код с помощью RhinoMocks:
//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
не установлен или я получаю исключение NullReferenceException, пытающееся подделать результат. Это, вероятно, столько вопрос о RhinoMocks чем что-либо ...