Testing 我需要在MVC4WebAPI服务调用中测试NServiceBus.Send(command)、Register(delegate)的帮助

Testing 我需要在MVC4WebAPI服务调用中测试NServiceBus.Send(command)、Register(delegate)的帮助,testing,moq,nservicebus,Testing,Moq,Nservicebus,我正在实现对NServiceBus的调用。在MVC4WebAPI服务调用中发送。我是在.NET4中这样做的,所以我不能访问C5的异步特性等等 我对最小起订量很陌生,所以我很感激你能给我一些建议,让我找到正确的方法来设置最小起订量。我确实看过[使用Moq模拟委托包装器][1]和[使用NServiceBus在应用程序中发送测试总线][2],但我对Moq的理解仍然很原始,无法适应我的测试需求,特别是处理异步调用所涉及的任务: public Task<HttpResponseMessage

我正在实现对NServiceBus的调用。在MVC4WebAPI服务调用中发送。我是在.NET4中这样做的,所以我不能访问C5的异步特性等等

我对最小起订量很陌生,所以我很感激你能给我一些建议,让我找到正确的方法来设置最小起订量。我确实看过[使用Moq模拟委托包装器][1]和[使用NServiceBus在应用程序中发送测试总线][2],但我对Moq的理解仍然很原始,无法适应我的测试需求,特别是处理异步调用所涉及的任务:

    public Task<HttpResponseMessage> Post(Command command)
    {
        var commandCompletion = new TaskCompletionSource<HttpResponseMessage>();
        var commandCompletionTask = commandCompletion.Task;

        Bus.Send(command).Register<CommandResult>(status =>
                            {
                                var response = new HttpResponseMessage { StatusCode = HttpStatusCode(status) };
                                commandCompletion.SetResult(response);
                            });

        return commandCompletionTask;
    }
我遇到了麻烦,因为我不知道如何在mockedBus中引用commandCompletionTask。。。我失败的尝试如下所示:

 _commandController = new CommandController(MockBus.Object);
  MockBus.Setup(b => b.Send(It.IsAny<ICommand>()).Register<CommandResult>((Action<CommandResult> s) => 
            {
                var response = new HttpResponseMessage { StatusCode = HttpStatusCode(s) };
                commandCompletion.SetResult(response);
            }));
写这篇文章让我的大脑想出了几个主意

到Moq TaskCompletionSource,但它没有接口,因此显然不能是Moq。 使用真正的TaskCompletionTask,它允许我测试从CommandController.Post返回的任务。遗憾的是,这并没有起到更好的作用,因为在LINQ试图处理委托时,我从LINQ那里得到了一个错误。
想法/建议?

是否可以在两者之间填充一些内容,并使用同步版本的Post进行测试?我可以,但部分要点是模拟IBU,以便它在与API调用交互时像真实的IBU一样工作,然后我可以进行测试,以查看API调用的功能。这里的一个问题是,据我所知,MVC WebAPI没有好的持久性存储。在NServiceBus的页面上有一个例子,显示了在MVC中使用ViewBag保存请求状态的IBus.Send测试。MVC WebAPI中没有类似的东西。是否可以在两者之间填充一些内容,并使用Post的同步版本进行测试?我可以,但部分要点是模拟IBU,以便它在与API调用交互时像真实的IBU一样工作,然后我可以测试以查看API调用的功能。这里的一个问题是,据我所知,MVC WebAPI没有好的持久性存储。在NServiceBus的页面上有一个例子,显示了在MVC中使用ViewBag保存请求状态的IBus.Send测试。MVC WebAPI中没有类似的东西。