Rhino Mock Stub Async Method
У меня есть ViewModel, который в конструкторе делает вызов метода async void для добавления в коллекцию
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);
}
}
Как именно я закрою команду _commandHandler.ExecuteGetReply()
, чтобы вернуть значение?
Кроме того, хорошо ли иметь такую функцию в конструкторе, чтобы сделать что-то вроде этого? Или, возможно, это может быть связано с вызовом... override void OnActivate()
(я использую Caliburn Micro)?
Ответы
Ответ 1
ICommandHandler.ExecuteGetReply
, похоже, возвращает Task<Response>
, чтобы вы могли сделать что-то вроде:
ICommand commandArg;
Response response;
stubHandler.Stub(h => h.ExecuteGetReply(commandArg)).Return(Task.FromResult(response));
Я бы не вызвал метод async void из вашего конструктора, так как вы не сможете получить уведомление о его завершении.