EasyMock: isA () falla en la clase correcta

Le estoy diciendo al objeto simulado que espere el método con el comando: mockObject.registerSQLDriver (isA (SomeName.class));

En tiempo de ejecución, el método se llama exactamente con una instancia de la clase SomeName, pero la prueba falla al decir que "Llamada inesperada al método registerSQLDriver ()"

¿Qué puede causar este problema?

Aquí está el código:

resetToDefault(_SQLDriverManager);
_SQLDriverManager.registerSQLDriver(isA(SQLDriver.class));
expectLastCall().anyTimes();
replay(_SQLDriverManager);

preguntado el 27 de agosto de 11 a las 15:08

El error está en la línea 73, o 56, o quizás 865. Sin código, es difícil de decir. Tal vez le dijo a su simulacro que este método se llamaría una vez, mientras que de hecho se llama varias veces. -

El mensaje de error dice "Llamada de método inesperada registerDriver ()". Te burlaste del método "registerSQLDriver". Esos no son los mismos métodos. -

El mensaje de error dice exactamente sobre registerSQLDriver (). Me parece que ese problema no está en isA (). Lo cambié a notNull () por ejemplo, todavía falla. -

El SQLDriverManager real utilizado por el código probado debe ser otro simulacro que el que configuró. ¿Está seguro de que no configuró una variable _SQLDriverManager local y, de hecho, el código usa una variable _SQLDriverManager de instancia? -

Tienes razón. Más tarde, inicialicé otra instancia de Mock. Gracias -

1 Respuestas

Probablemente, se está burlando de una instancia y probando otra instancia. Para comprobar esto, debe agregar un name parámetro en la creación simulada:

Comparable<String> mock01 = EasyMock.createMock("M1", Comparable.class);
Comparable<String> mock02 = EasyMock.createMock("M2", Comparable.class);

EasyMock.expect(mock01.compareTo(EasyMock.isA(String.class))).andReturn(1);
EasyMock.replay(mock01, mock02);

mock02.compareTo("Test");

EasyMock.verify(mock01, mock02);

En este caso, la prueba fallará con el mensaje:

Llamada de método inesperada M2.compareTo ("Prueba")

en lugar de:

Llamada inesperada al método Comparable.compareTo ("Prueba")

Respondido el 22 de Septiembre de 16 a las 10:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.