Fala Yetta!
Em um exemplo bem simples, temos o seguinte cenário:
Imaginemos que você precisa fazer um teste, onde será mostrada uma mensagem de erro para o usuário,
caso ele deixe os campos de um formulário em branco, como Nome e Endereco
@Test
public void deveriaMostrarMensagemDeCamposEmBrancoCasoOsCamposNomeEEnderecoNaoEstejamPreenchidos() throws Exception {
final FormularioView view = contexto.mock(FormularioView.class);
FormularioPresenter presenter = new FormularioPresenter(view, null);
contexto.checking(new Expectations() {{
allowing(view).getNome(); will(returnValue(""));
allowing(view).getEndereco(); will(returnValue(""));
one(view).mensagemDeCamposEmBranco();
}});
presenter.enviaDadosDoFormulario(NOME_EM_BRANCO, ENDERECO_EM_BRANCO);
}
Neste exemplo, queremos que a mensagem de erro seja mostrada. o código one(view).mensagemDeCamposEmBranco();
indica este método deve ser chamado uma vez quando o presenter.enviaDadosDoFormulario() for invocado.
Assim, não será mostrada uma mensagem na tela, mas sim teremos uma simulação de que essa mensagem será mostrada,
ou seja, garantimos que esse código da mensagem de erro será invocado, caso os campos estejam em branco.
E como indicamos que os campos estão em branco?
Desta forma: allowing(view).getEndereco(); will(returnValue(""));
Neste código indicamos que queremos que a propriedade endereco tenha como valor uma string vazia.
O mesmo para a propriedade nome.
Viu a facilidade?
Simulamos dois campos com string vazia, simulamos a chama a um método da nossa View e não foi preciso Instanciar objeto,
setar valor na mão, etc. “Mockamos” estes objetos e trabalhamos em cima das simulações.
No exemplo, estou usando JMock mas você pode usar outros, como Mockito.
Razoável?
Abraços!