【发布时间】:2015-03-18 21:24:39
【问题描述】:
由于没有 RelayCommandAsync(至少我不知道),如何测试这种情况。例如:
public RelayCommand LoadJobCommand
{
get
{
return this.loadJobCommand ?? (
this.loadJobCommand =
new RelayCommand(
this.ExecuteLoadJobCommandAsync));
}
}
private async void ExecuteLoadJobCommandAsync()
{
await GetData(...);
}
测试:
vm.LoadJobCommand.Execute()
Assert.IsTrue(vm.Jobs.Count > 0)
【问题讨论】:
-
MSDN 杂志posted a article 显示
AsyncCommand(基本上是RelayCommandAsync的实现),它提供了一个public async Task ExecuteAsync(object parameter)你可以等待。 -
@ScottChamberlain - 该链接与 mvvm-light 和 RelayCommands 有什么关系?
-
它没有。 mvvm-light 没有您需要的东西,因此您需要编写自己的异步中继命令(如果您希望单元测试能够调用该命令)。那篇文章给你一个实现。因为这不是 mvvm-light 中的解决方案,所以我将其作为评论而不是答案,因为我觉得它并没有“回答你的问题”,而是给了你另一个选择。
-
@ScottChamberlain - 明白,我会尝试先询问 mvvm-light 团队,看看他们是否有异步 RelayCommand 正在工作中,并暂时使用 InternalsVisableTo,除非有人回答更好的解决方案下面。
标签: c# unit-testing asynchronous mvvm-light .net-4.5.2