1

我正在为具有 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);

我错过了什么还是这是一个错误?

4

1 回答 1

7

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

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

或者,等效地:

MyCommand = DelegateCommand.FromAsyncHandler(() => MyMethod());
于 2014-10-24T15:49:57.353 回答