ScalaMock: не может обрабатывать методы с более чем 22 параметрами (пока)

Scalamock отклонил мою попытку насмешки, заявив, что он поддерживает не более 22 методов.

Причина в том, что в классе, который я пытаюсь смоделировать, более 22 методов (2 моих, более 20 смешанных (от Akka Json Support)).

Любые способы обойти это ограничение, не связанные с переосмыслением части микширования?

Я использовал это так, с scalatest 3.0.2: override val apiClient: ApiClient = mock[ApiClient] (apiClient.getById _).when(15538).returns("data")

Благодарю вас !


person David Puleri    schedule 12.04.2017    source источник
comment
К сожалению, я думаю, что не потому, что ограничение в 22 параметра для функции/метода исходит из недр Стандартная библиотека Scala. Хотя я только что наткнулся на это SO что может помочь.   -  person davidrpugh    schedule 12.04.2017


Ответы (2)


Я предполагаю, что вы на самом деле не хотите тестировать эти JSON и другие функции примесей, поэтому я бы предложил создать абстрактный трейт, который определяет ваши новые тестируемые подписи, и смешать его с вашим новым классом. Таким образом, вам не нужно было бы менять свой дизайн, и ваши клиенты этого класса ApiClient могли бы даже полностью отделиться, используя тип черты.

trait MyFunctionality {
  def foo(): Unit
  def somethingElse(i: Int): Int
}

class ApiClient extends Baseclass with Stuff with MoreStuff with MyFunctionality {
  // ...
}

потом

val m = mock[MyFunctionality]
(m.foo _).expects().once()
// etc

Таким образом, вы дополнительно защищаете от запуска любого кода в конструкторах вашего класса (или базового класса) во время модульного тестирования. Надеюсь, это поможет.

person Philipp    schedule 12.04.2017

В конце я пришел к тому же решению, но мне не очень нравится шум, который он добавляет к моему очень краткому классу. "Такова жизнь" :)

person David Puleri    schedule 12.04.2017