我正在为具有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);
我错过了什么或这是一个错误吗?
答案 0 :(得分:7)
您无法在async
构造函数中使用DelegateCommand
委托。您必须使用FromAsyncHandler
:
MyCommand = DelegateCommand.FromAsyncHandler(async () => await MyMethod());
或等同于:
MyCommand = DelegateCommand.FromAsyncHandler(() => MyMethod());