2012-01-12 41 views
1

的命令:Click.Command={Binding OkCommand}在我的視圖(PopupView.xaml使用Moq,如何檢測按鈕點擊是否觸發了我的viewmodel中的事件?

<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" /> 

打完在我的視圖模型下面的命令:(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的點擊事件,並最終檢測到ReturnSelectionListsCommand.Execute()GetAuditOrderByItemList()每次都被調用一次以保證我的彈出窗口正常工作。從我的研究中,我發現可以使用ButtonAutomation對等點來觸發點擊,但在我的測試中,如果使用MVVM,我看不到如何訪問OKButton。

在我的單元測試,我試圖按照這種線使用的東西:

var mock = new Mock<PopupViewModel>(); 

至少檢測時,方法調用的視圖模型。

回答

1

您可能會考慮使用project white,這是對MicrosoftUI自動化庫的抽象。

您可以使用API​​來模擬按鈕上的單擊,然後模擬您的視圖模型以設置標誌並聲明它已被設置。

相關問題