JMock - É possível mocar uma atributo declarado em um método?

2 respostas
M

Pessoal,

eu tenho uma classe do tipo:

public class Foo {  
      
         
        public int doXYZ() {  
            Bar bar = new Bar();  
            int result = bar.doIt();  
      
            ....//faz alguma coisa com result
      
           return result;  
       }  
   }

estou fazendo testes unitários dessa classe e gostaria de poder testar o método doXYZ(). Porem, o trecho "bar.doIt()" acaba invocando o BD. Logo, o ideal seria mocar a classe Bar e setar uma expectation para este método "bar.doIt()". É possível fazer isso com atributos declarados com method-escope?

Não queria promover esse atributo "bar" para class-member-scope apenas por conta desta restrição nos testes unitários, até porque a única dependência da classe Foo com a classe Bar é neste método.

Enfim, é possivel ?

Não achei nada a respeito na documentacao do JMock....

2 Respostas

Jair_Rillo_Junior

Não é possível você fazer isso que você quer. Usando o new Bar() você está fazendo um acoplamento entre a classe Foo e Bar. Será que é isso mesmo que você precisa? Eu não acho uma boa prática, ainda mais porque me parece que a classe Bar acessa recurso externo (banco de dados).

O legal seria sim a classe Bar ser um membro da classe Foo e ainda, criar uma Factory para retornar esse Bar.

M

Valeu Jair…acho q não vai ter outro jeito mesmo.

Criado 5 de junho de 2009
Ultima resposta 5 de jun. de 2009
Respostas 2
Participantes 2