[英]How to Unit Test DelegateCommand that calls async methods in MVVM
[英]Unit Test Prism 5 async Delegatecommand executes in parallel
我正在為具有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);
我是否缺少某些東西或這是一個錯誤?
您不能在DelegateCommand
構造函數中使用async
委托。 您必須使用FromAsyncHandler
:
MyCommand = DelegateCommand.FromAsyncHandler(async () => await MyMethod());
或等效地:
MyCommand = DelegateCommand.FromAsyncHandler(() => MyMethod());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.