Para corrigir um erro em um aplicativo, modifiquei um método chamado postLoginadicionando 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 getNextusado antes. Talvez um exemplo melhor seja um objeto representando um elétron; o que acontece quando ligo getPosition? Ou pior,getPosition(); getVelocity();