Para corrigir um erro em um aplicativo, modifiquei um método chamado postLogin
adicionando uma chamada a um método existente chamado getShoppingCart
.
Código
protected void postLogin() {
getShoppingCart();
}
No entanto, não sei ao certo qual é a melhor maneira de escrever um teste de unidade postLogin
.
Abordagem 1
Use o check do Mockito para simplesmente verificar se o método foi chamado.
verify(mock).getShoppingCart();
Abordagem 2
Teste o efeito colateral da chamada do método, buscando o valor do carrinho de compras do usuário.
AssertNotNull(user.getShoppingCart());
Uma abordagem é melhor que a outra?
getShoppingCart()
método tenha efeitos colaterais, você não precisa testar como ele é chamado. Se tiver efeitos colaterais, você realmente deve mudar seu nome, porque os getXXX()
métodos convencionalmente devem ser idempotentes.
getNextValue
? Indiscutivelmente, alguém poderia dizer "Não chame isso de getter; mude o nome para nextValue
", mas eu já vi getNext
usado antes. Talvez um exemplo melhor seja um objeto representando um elétron; o que acontece quando ligo getPosition
? Ou pior,getPosition(); getVelocity();