У меня есть класс прокси-сервера службы, который делает вызов asyn для обслуживания. Я использую метод обратного вызова для передачи результатов обратно в мою модель представления.RhinoMocks Проверка метода обратного вызова
Выполнение функционального тестирования модели просмотра, я могу высмеять прокси-сервер службы, чтобы обеспечить, чтобы методы вызывались на прокси-сервере, но как я могу гарантировать, что метод обратного вызова также вызван?
С 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);
}
}
Благодаря
мог бы рассказать, как я могу сделать внутренний метод видимым для проекта модульного тестирования. спасибо – joblot
Я разработал, как сделать внутренний метод видимым. Не могли бы вы объяснить, что делает действительно, и почему мы создали Стад для этой услуги. спасибо – joblot
Это всего лишь единичный тест для вашего ViewModel. Таким образом, все внешние зависимости издеваются/обрезаются. Метод «Do» сообщает Rhino.Mocks выполнять конкретную часть кода всякий раз, когда вызывается метод. Я использовал «Do», чтобы ваш ViewModel смог вызвать «GetDataAsync», а также получить обратный вызов - все во время тестирования. Проверка того, выполняет ли служба обратные вызовы как часть модульного теста класса Service. – PatrickSteele