Я использую Rhino Mocks.У меня есть хранилище данных, небольшая его часть определяется следующим образом:
interface IDataRepository
{
void GetCurrentUserId(Action<int?> callback);
}
Это на стороне клиента приложения служб RIA silverlight, поэтому у нас есть обратный вызов Action.После завершения операции на сервере произойдет обратный вызов, и будет получен результат.
Для модульного тестирования чего-либо, вызывающего этот метод, в итоге я делаю это:
private delegate void GetCurrentUserIdDelegate(Action<int?> callback);
private void GetCurrentUserId(Action<int?> callback)
{
callback.Invoke(10);
}
[TestMethod]
public void TestBlah()
{
var mockRepository = MockRepository.GenerateMock<IDataRepository>();
mockRepository.Expect(r => r.GetCurrentUserId(null)).IgnoreArguments().Do(new GetCurrentUserIdDelegate(GetCurrentUserId));
}
Это работаетхорошо, но это кажется очень многословным.Разве нет более краткого способа сделать это?
Я собираюсь определить делегата для каждого из методов в интерфейсе IDataRepository, которые имеют обратные вызовы в них.Мне это кажется немного грязным, сложным в обслуживании и т. Д.
Может быть, есть встроенный способ сделать это без необходимости определять делегатов?