首页 > 解决方案 > 由于模拟,“指定为非空的参数为空”

问题描述

我正在进行单元测试,由于系统的复杂性,我只能模拟。更深层次的嵌套函数之一需要存在属性(不可为空)。抛出 NullPointerException。

var diff = mock(Diff::class.java, withSettings().defaultAnswer(CALLS_REAL_METHODS))

var a1 = mock(RepositoryArtifact::class.java)
var a2 = mock(RepositoryArtifact::class.java)
var a3 = mock(RepositoryArtifact::class.java)

@Test
  fun andNot() {
     println(diff.andNot(collection1,collection2))
       assert(diff.andNot(collection1,collection2) == mutableListOf(a3))
  }

andNot 函数最终会导致使用模拟工件的检查,该工件为空。

  is RepositoryArtifact -> collection.filter { targetArtifact ->
      targetArtifact is RepositoryArtifact &&
          targetArtifact.message fuzzymatch artifact.message
  }

可能有点模糊。我不熟悉 Kotlin,所以请原谅任何错误。

标签: unit-testingkotlinmocking

解决方案


推荐阅读