У меня есть интерфейс службы данных с методом:
void GetDataByLocationId(Guid locationId, Action<InvokeOperation<IEnumerable<DataValue>>> callback);
Я хочу протестировать класс, который зависит от этого интерфейса службы данных, и хотел бы смоделировать вышеуказанный метод.
Я настроил свои макеты как:
_mocks = new MockRepository();
var dataLoadOperation = _mocks.StrictMock<InvokeOperation<IEnumerable<DataValue>>>();
Action<InvokeOperation<IEnumerable<DataValue>>> dataValueCallback = null;
Затем в моем тестовом выполнении:
var locationId = Guid.NewGuid();
var values = // something //
using (_mocks.Unordered())
{
Expect.Call(() => _dataService.GetDataByLocationId(Arg<Guid>.Is.Equal(locationId), Arg<Action<InvokeOperation<IEnumerable<DataValue>>>>.Is.Anything));
LastCall.Callback(new Func<Action<InvokeOperation<IEnumerable<DataValue>>>, bool>(c => { dataValueCallback = c; return true; }));
dataLoadOperation .Stub(x => x.HasError).Return(false);
dataLoadOperation .Stub(x => x.Value).Return(values);
}
Но это никогда не делает эток выполнению ... Оказывается, что:
System.ServiceModel.DomainServices.Client.InvokeOperation
является запечатанным class, и Rhino Mocks выдает исключение при запуске
Не могу создать макеты запечатанных классов
Я ищу предложения по улучшению моего дизайна для поддержкиэтот контрольный пример;и до сих пор использует насмешки.