I am using scala 2.11 with scalatest 2.11. I am trying to mock a class for unit test a class.
Vector class has a method "vectorSum" that adds 2 vectors and returns the resulting vector.
Vector.scala
package com.unitTestDemo
class Vector(d_x:Int,d_y:Int,d_z:Int) {
  var x = d_x
  var y = d_y
  var z = d_z
  def vectorSum(second:Vector): Vector = {
    var result = new Vector(0,0,0)
    result.x = x + second.x
    result.y = y + second.y
    result.z = z + second.z
    return result
  }
}
VectorUtil class has a method "findMaxVectorSum" that takes an Array of vectors and returns pair of array indexes that has highest sum. VectorUtil.scala
package com.unitTestDemo
class VectorUtil {
  def findMaxVectorSum(vectorArray:Array[Vector]): Unit ={
    var max = 0.0
    var returnI = 0
    var returnj = 0
    for(i <- 0 to vectorArray.length-2){
      for(j <- i+1 to vectorArray.length-1){
        var temp = vectorArray(i)vectorSum(vectorArray(j))
        var tempMax = math.sqrt(temp.x*temp.x + temp.y*temp.y + temp.z*temp.z)
        if(tempMax > max) {
          max = tempMax
          returnI = i
          returnj = j
        }
      }
    }
    return (returnI,returnj)
  }
}
In VectorUtilTest, I am trying to mock the Vector class and test the findMaxVectorSum method.
VectorUtilTest.scala
package com.unitTestDemo
import org.mockito.ArgumentMatchers._
import org.mockito.Mockito
import org.mockito.Mockito.when
import org.mockito.MockitoSugar.verify
import org.scalatest.{FunSuite, Matchers}
import org.scalatest.mockito.MockitoSugar
class VectorUtilTest extends FunSuite with MockitoSugar with Matchers{
  test("testFindMaxVectorSum") {
    val vectorArray:Array[Vector] = new Array[Vector](3)
    vectorArray(0) = new Vector(1,2,3)
    vectorArray(1) = new Vector(2,3,4)
    vectorArray(2) = new Vector(3,4,5)
    val temp = new Vector(1,1,1)
    val mockVector = mock[Vector]
    when(mockVector.vectorSum(any[Vector])).thenReturn(temp)
    val vectorUtil = new VectorUtil()
    vectorUtil.findMaxVectorSum(vectorArray)
    verify(mockVector,Mockito.atLeastOnce).vectorSum(any[Vector])
  }
}
But when I run this test method, I get output as follows:
Wanted but not invoked:
vector.vectorSum(<any>);
-> at com.unitTestDemo.VectorUtilTest$$anonfun$1.apply(VectorUtilTest.scala:26)
Actually, there were zero interactions with this mock.
I have wasted way too much time on this and I am very frustrated now. Can anybody please assist me with this?
Thank you very much in advance.