Я привязался к обогащению типов, например
object MyImplicits{
  implicit class RichInt(i: Int){
    def complexCalculation: Int = i * 200 
  }
}
Который я использую в коде, подобном этому
object Algorithm{
  def apply(rand: Random) = {
    import MyImplicits._
    rand.nextInt.complexCalculation + 1
  }
}
Но как я могу выделить и unit test Алгоритм сейчас? В частности, я хотел бы высмеять реализацию complexCalculation, что-то вроде этого:
class MyAlgorithmTest extends FreeSpec with MockitoSugar{
  import org.mockito.Mockito.when
  "MyApgorithm" {
    "Delegates complex calculation" in {
      val mockRandom = mock[Random]
      when(mockRandom.nextInt()).thenReturn(1)
      // This wouldn't work, but is the kind of thing I'm looking for
      //when(1.complexCalculation).thenReturn(2)
      val expected = 1 * 2 + 1
      val result = MyAlgorithm(mockRandom)
      assert(result === expected)
    }
  }
}