Абстрагируйте ваш код, чтобы вы могли ввести желаемое поведение во время тестирования
public class MethodInvoker
{
public virtual void InvokeMethod(Action method, Action callback)
{
method.BeginInvoke(callback, method);
}
}
Эта версия является асинхронной.Во время тестирования вы можете просто сделать блокирующую версию:
public class TestInvoker
{
public IAsyncResult MockResult { get; set; }
public override void InvokeMethod(Action method, Action callback)
{
method();
callback(MockResult);
}
}
Тогда ваш код просто изменится на следующее:
// Inject this dependency
Invoker.InvokeMethod(PopulateView, PopulateViewCallback);
Во время выполнения он асинхронный.Во время тестирования он блокирует вызов.