Scalamock 3. Método de sobrecarga simulada sin parámetro
unit-testing scalatest (3)
En la escala 2.12 esto también funciona (sin inspección para Intellij):
//noinspection ConvertibleToMethodValue
(tailer.run _: () => Unit) expects()
No pude encontrar ninguna documentación que explique cómo simular métodos sobrecargados que no tienen argumentos en Scalamock, por ejemplo.
public boolean isInfoEnabled(Marker marker);
public boolean isInfoEnabled();
Para burlarse de la función que toma el marcador, simplemente se puede usar
(loggerMock.isInfoEnabled(_: Marker)).expects(*).returning(true)
¿Pero cómo burlarse del otro método que no toma parámetros? Cualquier ayuda es apreciada.
Estaba usando este enfoque hasta que me di cuenta de que en Scala 2.12+ esta solución está obsoleta.
Recibirá una advertencia como
Eta-expansion of zero-argument method values is deprecated.
Después de algunas investigaciones descubrí esta solución:
(loggerMock.isInfoEnabled _ ).expects().returning(true)
o
import scala.language.postfixOps
loggerMock.isInfoEnabled _ expects () returning true
Finalmente lo resolví:
(loggerMock.isInfoEnabled: () => Boolean).expects().returning(true)
Este issue me ayudó mucho. Aún sería bueno tener algo como esto documentado.