Rhino Mock Stub异步方法

时间:2013-08-22 17:39:48

标签: unit-testing asynchronous nunit rhino-mocks c#-5.0

我有一个ViewModel,它在构造函数中调用异步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 个答案:

答案 0 :(得分:22)

ICommandHandler.ExecuteGetReply似乎返回Task<Response>,因此您可以执行以下操作:

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

但是,我不会从构造函数中调用异步void方法,因为在完成后无法通知您。