Matchers eq错误地表示列表不相等

时间:2018-10-24 19:55:54

标签: scala mockito

我正在编写一些scala测试,并且有

when(mockLoader.load(Matchers.eq(expectedPath))).thenReturn(testData)
val data = mockLoader.load(expectedPath)
data.count() shouldBe 0

但是我在对数据执行count()时得到了NPE,这意味着该模拟程序认为我输入了意外的路径。这是预期路径:

val expectedPath = List("hdfs:///session/stream/folder/100")

当我打印出模仿者期望的路径和我的代码实际生成的路径时,我会看到

[scalatest] path made is: List("hdfs:///session/stream/folder/100")
[scalatest] mock path is: List("hdfs:///session/stream/folder/100")

匹配器计算出某种内部比较结果是否会使包含相同值的列表失败?

1 个答案:

答案 0 :(得分:0)

尝试使用Mockito-scala,它将以不同的方式为您提供帮助

  • 如果您在严格模式下使用它(通过在模拟夹具中进行混合),如果您的代码使用与您存根的值不同的值调用该模拟,它将很快失败
  • 无需执行Matchers.eq,因为匹配器已重命名为eqTo
  • eqTo使用尺度相等,因此您甚至可以覆盖如何比较这些对象
  • 您只需要为需要它们的参数提供匹配器(使用惯用语法时,编译器将自动用eqTo包装其余部分)

选中https://github.com/mockito/mockito-scala,以获得有关这些功能的更详细说明

希望有帮助!