У меня есть класс прокси службы, который выполняет асинхронный вызов операции службы. Я использую метод обратного вызова, чтобы передать результаты обратно в мою модель представления.
Выполняя функциональное тестирование модели представления, я могу имитировать прокси-сервер службы, чтобы гарантировать, что методы вызываются на прокси-сервере, но как я могу гарантировать, что также вызывается метод обратного вызова?
С помощью 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);
}
}
Спасибо