我的视图中的命令Click.Command={Binding OkCommand}
(PopupView.xaml
)
<Button
Name="OKButton"
Content="{Binding Path=foo.foo, Source={StaticResource LocalResourceWrapper}}"
ToolTipService.ToolTip="{Binding Path=foo.foo, Source={StaticResource LocalResourceWrapper}}"
HorizontalAlignment="Center"
commands:Click.Command="{Binding OkCommand}"
Margin="5,10,5,10"
Click="OK_Click"
TabIndex="1" />
在我的viewmodel中触发以下命令:(PopupViewModel.cs)
private ICommand _okCommand;
public ICommand OkCommand
{
get
{
if (_okCommand == null)
{
_okCommand = new DelegateCommand<object>(OnOKCommand);
}
return _okCommand;
}
}
public void OnOKCommand(object someObject)
{
this.ReturnSelectionListsCommand.Execute(this.GetAuditOrderByItemList());
}
public DelegateCommand<List<AuditOrderByItem>> ReturnSelectionListsCommand { get; set; }
基本上我想检测按下按钮时确实调用了OKCommand。因此,我需要手动调用OKButton的click事件,并最终检测到ReturnSelectionListsCommand.Execute()
和GetAuditOrderByItemList()
都被调用一次,以保证我的弹出窗口正常工作。从我的研究中,我看到ButtonAutomation对等体可用于触发点击,但在我的测试中,如果我使用MVVM,我看不到如何访问OKButton。
在我的单元测试中,我试图使用类似的东西:
var mock = new Mock<PopupViewModel>();
至少检测在viewmodel中调用方法的时间。
答案 0 :(得分:1)
您可能想考虑使用project white,这是对MicrosoftUI Automation库的抽象。
您可以使用API模拟按钮上的单击,然后模拟视图模型以设置标志并声明它已设置。