单元测试Prism 5异步委派命令并行执行

本文关键字:命令 并行执行 委派 异步 Prism 单元测试 | 更新日期: 2023-09-27 18:27:40

我正在为具有DelegateCommand的ViewModel编写单元测试。此命令使用异步方法执行,因为Prism 5支持异步方法,如下所示:

MyCommand = new DelegateCommand(async () => await MyMethod());

现在我进行了单元测试,我注意到

await model.Command.Execute();
Assert.IsTrue(model.CommandWasRun); // just an example

在命令运行期间立即返回(因此失败)。

我认为这是一个错误的原因是,在同一个单元测试中,如果我写,一切都很好

await model.MyMethod();
Assert.IsTrue(model.CommandWasRun);

我是错过了什么,还是这是个bug?

单元测试Prism 5异步委派命令并行执行

不能在DelegateCommand构造函数中使用async委托。你必须使用FromAsyncHandler:

MyCommand = DelegateCommand.FromAsyncHandler(async () => await MyMethod());

或者,等效地:

MyCommand = DelegateCommand.FromAsyncHandler(() => MyMethod());