Como iniciar o teste de unidadeInvocar em uma ação

Estou procurando uma maneira de testar BeginInvoke em um método Action, já que o método é executado em um encadeamento em segundo plano, não há como saber quando ele realmente conclui ou chama o método de retorno de chamada. Estou procurando uma maneira de manter meu teste em espera até que o retorno de chamada seja chamado antes de fazer afirmaçõe

Na classe Presenter a seguir, você pode perceber que estou chamando PopulateView no thread de segundo plano que atualiza a exibição quando os dados são buscados e estou tentando afirmar que as Propriedades da exibição foram inicializadas corretament

Estou usando NUnit e Moq.

public class Presenter
{
    private IView _view;
    private IService _service;
    public Presenter(IView view, IService service)
    {
        _view = view;
        _service = service;

        Action action = PopulateView;  
        action.BeginInvoke(PopulateViewCallback, action);
    }
    private void PopulateViewCallback(IAsyncResult ar)
    {
            try
            {
                Action target = (Action)ar.AsyncState;
                target.EndInvoke(ar);
            }
            catch (Exception ex)
            {
                Logger.Instance.LogException("Failed to initialize view", ex);
            }
    }

     private void PopulateView()
     {
          Thread.Sleep(2000); // Fetch data _service.DoSomeThing()
          _view.Property1 = "xyz";
     }  
}

questionAnswers(3)

yourAnswerToTheQuestion