A implementação dainterface INotifyPropertyChanged permite que as Views reajam às alterações originadas de Models e ViewModels. Essas alterações não estão limitadas aos dados mostrados nos controles -- elas também são usadas para controlar a View, como os estados do ViewModel que fazem com que as animações sejam iniciadas ou os controles sejam desabilitados. As propriedades que podem ser atualizadas diretamente pelo teste unitário podem ser testadas anexando um manipulador de eventos aoevento PropertyChanged e verificando se o evento é gerado após definir um novo valor para a propriedade. O exemplo de código a seguir mostra esse teste: Bloco de código |
---|
language | c# |
---|
theme | RDark |
---|
title | C# |
---|
| [Fact]
public void SettingMensagemErroLoginPropertyShouldRaisePropertyChanged()
{
var invoked = false;
var loginViewModel = new LoginViewModel(_webApiService, _configService, _userLoginService, _navigationService);
loginViewModel.PropertyChanged += (_, e) =>
{
if (e?.PropertyName?.Equals(nameof(LoginViewModel.MensagemErroLogin)) ?? false)
{
invoked = true;
}
};
loginViewModel.IsMock = true;
loginViewModel.Login.Value = "error";
loginViewModel.Senha.Value = "error";
loginViewModel.LoginCommand.Execute(null);
Assert.True(invoked);
} |
Clique para acessar o arquivo Este teste de unidade unitário invoca ocomando LoginCommand daclasse LoginViewModel , que faz com que suapropriedade MensagemErroLogin seja atualizada. O teste será aprovado, desde que oevento PropertyChanged seja gerado para apropriedade MensagemErroLogin . |