¿Hay alguna manera de burlarse de la construcción de objetos usando JMock en Java?¿Cómo burlarse de la construcción de objetos?
Por ejemplo, si tengo un método como tal:
public Object createObject(String objectType) {
if(objectType.equals("Integer") {
return new Integer();
} else if (objectType.equals("String") {
return new String();
}
}
... ¿hay una manera de burlarse de la expectativa de la construcción objeto en un método de prueba?
Me gustaría poder establecer las expectativas de que se están llamando a ciertos constructores, en lugar de tener un código adicional para verificar el tipo (ya que no siempre será tan intrincado y simple como mi ejemplo).
Así que en lugar de:
assertTrue(a.createObject() instanceof Integer);
que podría tener una expectativa cierta de la constructora que se llama. Solo para que sea un poco más limpio, y expresar lo que realmente se está probando de una manera más legible.
Por favor, disculpe el ejemplo sencillo, el problema real que estoy trabajando es un poco más complicado, pero tener la expectativa sería simplificarlo.
Por un poco más de fondo:
que tienen un método de fábrica sencillo, lo que crea objetos envolventes. Los objetos que se envuelven pueden requerir parámetros que son difíciles de obtener en una clase de prueba (es un código preexistente), por lo que es difícil construirlos.
Tal vez más cerca de lo que realmente estoy buscando es: ¿hay alguna manera de burlarse de una clase completa (usando CGLib) de un solo golpe, sin especificar cada método para anular?
Así que la maqueta se está envuelto en un constructor, por lo que, obviamente, los métodos pueden ser llamados en él, es capaz de dinámicamente JMock burla a cabo cada método?
Supongo que no, ya que sería bastante complicado. Pero saber que estoy ladrando al árbol equivocado es valioso también :-)
Usted es la fábrica podría tener su fábricas propias para cada tipo podría construir (una fábrica de enteros, una fábrica de cuerdas, etc) pero, tienes razón, eso es virar hacia excesivamente complicado . Es probable que la prueba de prueba sea probablemente la mejor opción. – sblundy