Я пытаюсь смоделировать универсальный интерфейс Java с перегруженным методом с различным количеством параметров.Код интерфейса:
import java.util.concurrent.Callable;
public interface GOInterface<T> {
void send(T record);
void send(T record, Callable<T> onComplete);
}
Я пытаюсь смоделировать отправку с помощью функции onComplete следующим образом:
import java.util.concurrent.Callable
import org.scalamock.scalatest.MockFactory
import org.scalatest.{FlatSpec, Matchers}
class JavaInterfaceTest extends FlatSpec with Matchers with MockFactory {
behavior of "scalamock"
it should "mock java generic interface with overloaded method (with different number of parameters)" in {
var result = ""
val m = mock[GOInterface[String]]
(m.send(_: String, _: Callable[String])).expects(*, *)
.onCall{ case(s: String, c: Callable[String]) => c.call()}.once
m.send("hello", new Callable[String] {
override def call(): String = {result = "world"; result}
})
result should be("world")
}
it should "mock java generic interface with overloaded method (with different number of parameters) 2" in {
var result = ""
val m = mock[GOInterface[String]]
(m.send(_: String)).expects(*).once
m.send("hello")
result should be("")
}
}
ОшибкаЯ получаю от компилятора:
error: value expects is not a member of (String, java.util.concurrent.Callable[String]) => Unit
[ERROR] (m.send(_: String, _: Callable[String])).expects(*, *)
[ERROR] ^
error: value expects is not a member of String => Unit
[ERROR] (m.send(_: String)).expects(*).once
[ERROR]
Просматривая различные примеры в ScalaMock git Я вижу, что не существует теста, который проверял бы универсальный интерфейс с перегруженным методом с различным количеством параметров.
Мои зависимости:
<dependency>
<groupId>org.scalamock</groupId>
<artifactId>scalamock-scalatest-support_2.11</artifactId>
<version>3.6.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.scalamock</groupId>
<artifactId>scalamock-core_2.11</artifactId>
<version>3.6.0</version>
<scope>test</scope>
</dependency>
Тем временем я создал ошибку в репо ScalaMock.