[Fact] publicvoidSetProperty_WhenValueNotChanged_ShouldNotFireEvent() { var vm = new CounterViewModel(); int eventCount = 0; vm.PropertyChanged += (s, e) => { if (e.PropertyName == nameof(CounterViewModel.Count)) eventCount++; };
// ---- 测试 ---- publicclassLoginViewModelTests { [Fact] publicvoidLoginCommand_WithoutCredentials_ShouldBeDisabled() { var vm = new LoginViewModel();
Assert.False(vm.LoginCommand.CanExecute(null)); }
[Fact] publicvoidLoginCommand_WithCredentials_ShouldBeEnabled() { var vm = new LoginViewModel(); vm.UserName = "admin"; vm.Password = "123456";
Assert.True(vm.LoginCommand.CanExecute(null)); }
[Fact] publicvoidLoginCommand_ClearPassword_ShouldDisable() { var vm = new LoginViewModel(); vm.UserName = "admin"; vm.Password = "123456"; Assert.True(vm.LoginCommand.CanExecute(null));
[Fact] publicvoidCanExecuteChanged_ShouldFire_WhenCredentialsChange() { var vm = new LoginViewModel(); int fireCount = 0; vm.LoginCommand.CanExecuteChanged += (s, e) => fireCount++;
// ---- 测试 ---- publicclassDataViewModelTests { [Fact] publicasync Task LoadCommand_ShouldUpdateData() { var vm = new DataViewModel();
await vm.LoadCommand.ExecuteAsync(null);
Assert.Equal("已完成", vm.Data); }
[Fact] publicasync Task LoadCommand_IsRunning_ShouldBeTrueWhileExecuting() { var vm = new DataViewModel(); var task = vm.LoadCommand.ExecuteAsync(null);
Assert.True(vm.LoadCommand.IsRunning);
await task;
Assert.False(vm.LoadCommand.IsRunning); }
[Fact] publicasync Task LoadCommand_CanExecute_ShouldBeFalseWhileRunning() { var vm = new DataViewModel(); var task = vm.LoadCommand.ExecuteAsync(null);
// ---- 测试 ---- publicclassNavigationViewModelTests { [Fact] publicvoidGoToDetailCommand_ShouldSendMessage() { var messenger = new WeakReferenceMessenger(); var vm = new NavigationViewModel(messenger);
NavigateToDetailMessage? received = null; messenger.Register<NavigateToDetailMessage>(this, (r, m) => { received = m; });
publicvoidReceive(StatusMessage message) { Status = message.Text; } }
// ---- 测试 ---- publicclassStatusViewModelTests { [Fact] publicvoidReceiveStatusMessage_ShouldUpdateStatus() { var messenger = new WeakReferenceMessenger(); var vm = new StatusViewModel(messenger);
messenger.Send(new StatusMessage("加载完成"));
Assert.Equal("加载完成", vm.Status); }
[Fact] publicvoidWhenDeactivated_ShouldNotReceiveMessages() { var messenger = new WeakReferenceMessenger(); var vm = new StatusViewModel(messenger);