Olá a todos estou iniciando no mundo do Mock…estou tentando entender o jMock…tenho um exemplo q foi feito para a versão 1 mas estou tentando adaptar e c isso entender melhor o código p a versão 2…Dêem uma olhada…
//Classe a ser testada:
public class ClassePeba {
public String getAlgo(int i, ClasseCriptografia classeCriptografa){
String palavra = “blablabla”;
palavra = classeCriptografa.criptogravaPalavra(palavra, i);
return palavra;
}
}
//Classe usada tb…
public class ClasseCriptografia {
public String criptogravaPalavra(String palavra, int i) {
if(i == 1){
palavra = palavra.replace(“a”, “@”);
palavra = palavra.replace(“b”, “!”);
palavra = palavra.replace(“l”, “?”);
}else{
palavra = palavra.replace(“a”, “*”);
palavra = palavra.replace(“b”, “$”);
palavra = palavra.replace(“l”, “%”);
}
return palavra;
}
}
Agora como quero testar a ClassePeba q depende de ClasseCriptografia vou usar o jMock p mockar essa última…então vamos lá…
Primeiro vou const uma interface p essa…
//Interface
public interface ClasseCriptografiaInterface {
public abstract String criptogravaPalavra(String palavra, int i);
}
Bom e agora a classe de teste ok…usando o jMock
import org.jmock.integration.junit3.<em>;
import org.jmock.Mockery;
import static org.jmock.Expectations.</em>;
public class TestClassePeba extends MockObjectTestCase{
ClassePeba classePeba;
Mockery classeCriptografa;
ClasseCriptografiaInterface classeCriptografaMock;
public void setUp()
{
classePeba = new ClassePeba();
classeCriptografa = new Mockery();
classeCriptografaMock = classeCriptografa.mock(ClasseCriptografiaInterface.class);
}
public void testGetAlgo()
{
classeCriptografaMock.expects(one()).method(“criptogravaPalavra”).with(eq(“blablabla”), eq(1)).will(returnValue("!?@!?@!?@"));
assertEquals("!?@!?@!?@", classePeba.getAlgo(1, (ClasseCriptografiaInterface)classeCriptografaMock.proxy()));
classeCriptografaMock.expects(once()).method(“criptogravaPalavra”).with(eq(“blablabla”), eq(2)).will(returnValue("$%<em>$%</em>$%<em>"));
assertEquals("$%</em>$%<em>$%</em>", classePeba.getAlgo(2, (ClasseCriptografiaInterface)classeCriptografa.proxy()));
}
}
Como vcs vão ver tá misturado a syntax da versão 1 e da 2…isso pq não sei muito sobre elas e estou tentando aprender mas não estou conseguindo…
Se alguém pude me ajudar eu agradeço…
Até +