У меня есть прокси-класс службы, который выполняет асинхронный вызов службы. Я использую метод обратного вызова для передачи результатов обратно в мою модель представления.
Выполняя функциональное тестирование модели представления, я могу смоделировать прокси-сервер службы, чтобы гарантировать, что методы прокси-сервера вызываются, но как я могу гарантировать, что метод обратного вызова также вызывается?
С помощью RhinoMocks я могу проверить, что события обрабатываются и события генерируют события на макете объекта, но как я могу проверить обратные вызовы?
ViewModel:
public class MyViewModel
{
public void GetDataAsync()
{
// Use DI framework to get the object
IMyServiceClient myServiceClient = IoC.Resolve<IMyServiceClient>();
myServiceClient.GetData(GetDataAsyncCallback);
}
private void GetDataAsyncCallback(Entity entity, ServiceError error)
{
// do something here...
}
}
ServiceProxy:
public class MyService : ClientBase<IMyService>, IMyServiceClient
{
// Constructor
public NertiAdminServiceClient(string endpointConfigurationName, string remoteAddress)
:
base(endpointConfigurationName, remoteAddress)
{
}
// IMyServiceClient member.
public void GetData(Action<Entity, ServiceError> callback)
{
Channel.BeginGetData(EndGetData, callback);
}
private void EndGetData(IAsyncResult result)
{
Action<Entity, ServiceError> callback =
result.AsyncState as Action<Entity, ServiceError>;
ServiceError error;
Entity results = Channel.EndGetData(out error, result);
if (callback != null)
callback(results, error);
}
}
Спасибо