假设:
您的 ViewModel 公开了要绑定到的视图的属性和命令。
EnablesAddChildItemsIfAnItemHasBeenSelected()
viewModel.AddChildItemsCommand.CanExecuteChanged += MarkNotificationReceived; // dummy handler in test fixture
viewModel.SelectedItem = someItemVM;
Assert.IsTrue(viewModel.AddChildItemsCommand.CanExecute(params))
Assert.IsTrue(this.ReceivedCanExecuteChangedNotification) // flag in test fixture
如果您发现自己经常这样做,您可以创建自己的实用程序类 PropertyChangeListener / CanExecuteChangeListener 并传入您的视图模型和属性/命令名称。
DisablesAddChildItemsIfThereIsNoSelection
viewModel.SelectedItem = someItemVM
var addChildItemsCmd = viewModel.AddChildItemsCommand;
var changeListener = new CanExecuteChangeListener(addChildItemsCmd);
viewModel.SelectedItem = null
Assert.IsFalse(addChilditemsCmd.CanExecute(params))
Assert.IsTrue(changeListener.NotificationReceived)