unit-testing asynchronous nunit rhino-mocks c#-5.0

unit testing - Método asincrónico Rhino Mock Stub



unit-testing asynchronous (1)

Tengo un ViewModel que, en el constructor, hace una llamada a un método async void para agregar a una colección

public MyViewModel(ICommandHandler commandHandler) { _commandHandler = commandHandler; SetupCollection(); } private async void SetupCollection() { var commands = GetCommands(); foreach (var command in commands) { var response = await _commandHandler.ExecuteGetReply(command); if (response != null) Response.Add(response); } }

¿Cómo exactamente _commandHandler.ExecuteGetReply() comando _commandHandler.ExecuteGetReply() para devolver un valor?

Además, ¿está bien tener tal función en el constructor para hacer algo como esto? ¿O debería ir dentro de ... override void OnActivate() (estoy usando Caliburn Micro)?


ICommandHandler.ExecuteGetReply parece devolver una Task<Response> para que pueda hacer algo como:

ICommand commandArg; Response response; stubHandler.Stub(h => h.ExecuteGetReply(commandArg)).Return(Task.FromResult(response));

Sin embargo, no llamaría a un método de vacío asíncrono desde su constructor, ya que no tendrá forma de recibir una notificación cuando se haya completado.