Per correggere un bug in un'applicazione, ho modificato un metodo denominato postLoginaggiungendo una chiamata a un metodo esistente denominato getShoppingCart.
Codice
protected void postLogin() {
getShoppingCart();
}
Tuttavia, non sono sicuro di quale sia il modo migliore per scrivere un test unitario postLogin.
Approccio 1
Usa verifica da Mockito per verificare semplicemente che il metodo è stato chiamato.
verify(mock).getShoppingCart();
Approccio 2
Prova l'effetto collaterale della chiamata del metodo recuperando il valore del carrello dell'utente.
AssertNotNull(user.getShoppingCart());
Un approccio è migliore dell'altro?
getShoppingCart()metodo non abbia effetti collaterali, non è necessario verificare che venga chiamato. Se ha effetti collaterali, dovresti davvero cambiarne il nome perché i getXXX()metodi convenzionalmente dovrebbero essere idempotenti.
getNextValue? Probabilmente qualcuno potrebbe dire "Non chiamarlo getter; cambia il nome in nextValue", ma l'ho già visto getNextusato prima. Forse un esempio migliore sarebbe un oggetto che rappresenta un elettrone; cosa succede quando chiamo getPosition? O peggio,getPosition(); getVelocity();