Sim !!! Vc cria mocks pro model (DAO, POJOs, etc) que está dentro da action, não para a própria action. Se não vc vai testar o mock e não a action !!! :lol:
Thiago, quando vc fala que vc não quer usar o MockInput e o MockOutput, eu acho estranho, pois vc não vai ter que usar um monte de mocks de qualquer jeito para o model ??? Esses mocks já estão prontos e vc vai usá-los muito facilmente, sem qualquer dor de cabeça.
Mas isso é gosto! Vc pode preferir trabalhar com injection e ignorar o INPUT. Só não consigo entender quando vc falar: “para facilitar os testes…”
[quote=saoj] Thiago, quando vc fala que vc não quer usar o MockInput e o MockOutput, eu acho estranho, pois vc não vai ter que usar um monte de mocks de qualquer jeito para o model ??? Esses mocks já estão prontos e vc vai usá-los muito facilmente, sem qualquer dor de cabeça.
[/quote]
saoj…
Se o meu objetivo e ter minhas actions bém testadas, não irá fazer diferença eu usar MockHttpServletRequest ou MockInput.
Se quando eu for fazer um teste eu tiver que me preocupar e criar e instaciar o MockInput, MockOutput, MockClienteDao para ai sim eu poder testar minha action, eu não vejo vantagem nisso!
Desta forma, toda action que eu criar terei que criar o MockInput, o MockOutput e o mock para o dao que eu tiver usando. Assim, vai ficar muito chato testar minhas actions e demorado, já que para action eu terei com certeza mais de um teste!
Se você eliminar a necessidade de usar estes MockInput e MockOutput, assim como no webwork, os meus testes serão mais legíveis e mais fáceis de implementar!
Já que testes são usados em metodologias ágeis, quanto mais vc facilitar a criação dos testes, mais você vai agradar este público alvo!
Bom… quando digo facilitar os testes, o que escrevi a cima de certa forma já responde essa questão.
Suponde que para uma action eu escreva 3 testes. Logo, terei 3 MockInput, 3 Mock Output e 3 DAOMock… Daí, obrigatoriamente teria que pensar em um refactoring para minimizar toda esta repetição.
Se vc eliminar eles MocksInput e Output, eu me preocuparia apenas com os Mocks dos meus DAO’S!
Ora, qual é a responsabilidade do DAO? Abstrair o lugar onde os dados vão ser persistidos. Então o que é que tem que ser testado? Se ele está persistindo os dados corretamente no mecanismo de persistência, tem que testar com o banco de dados, a serialização ou sejá lá como a coisa estiver sendo persistida. Tem um material interessante sobre isso aqui: