Как настроить вызов метода BeginXXX EndXXX с помощью moq?

Допустим, у меня есть несколько APM (BeginXxx, EndXxx )шаблонных асинхронных методов (как часть некоторого прокси-сервера службы WCF, который я вызываю):

public interface ISomeService
{
    IAsyncResult BeginSomeMethod(int num, AsyncCallback callback, object state);
    int EndSomeMethod(IAsyncResult ar);
}

В моем фактическом коде используется Task.Factory.FromAsyncдля создания задачи, а затем ожидание этой задачи с использованием нового шаблона async/await, представленного в.net 4.5.

Я хотел бы протестировать свой класс, и поэтому мне нужно написать метод, который получает макет, метод начала, метод завершения и возвращаемое значение, а также настраивает макет так, чтобы он в конечном итоге возвращал требуемое возвращаемое значение.

пример использования:

SetupAsync(mock, mocked => mocked.BeginSomeMethod, mocked=> mocked.EndSomeMethod, 7);

Что приведет к тому, что асинхронный поток с любым аргументом типа int будет возвращать 7. Я не могу понять, как это сделать в moq.

6
задан rony l 30 June 2012 в 20:49
поделиться