参数匹配器的使用无效 0 匹配预期。3 记录

维克多崔

我正在使用MockitoSugar在 Scala 中编写单元测试我正在使用org.mockito.Mockito.whenorg.mockito.Matchers.anyString测试方法如下所示。

def getDataSourceToDataFrame(database: scala.Predef.String, tableName: scala.Predef.String): DataFrame = {
glueContext.getCatalogSource(
  database = database,
  tableName = tableName,
  transformationContext = database + "." + tableName + ".read")
  .getDynamicFrame()
  .toDF()

}

这是我的单元测试的样子:

import com.amazon.rrsetlglue.glue.wrappers.WrappedGlueContext
import com.amazonaws.services.glue.{DynamicFrame, GlueContext, DataSource}
import org.scalatest.{BeforeAndAfter, FunSuite, Matchers}
import org.apache.spark.sql.DataFrame
import org.mockito.Mockito.when
import org.mockito.Matchers.anyString
import org.scalatest.junit.JUnitRunner
import org.junit.runner.RunWith
// Use Mockito because ScalaMock does not work with Glue
@RunWith(classOf[JUnitRunner])
class WrappedGlueContextTest extends FunSuite with 

org.scalatest.mockito.MockitoSugar with BeforeAndAfter  {

  var mockGlueContext : GlueContext = _
  var wrappedGlueContext: WrappedGlueContext = _

  before {
    mockGlueContext = mock[GlueContext]
    wrappedGlueContext = new WrappedGlueContext(mockGlueContext)
  }


 test("Test get dataFrame from glue data catalog source") {

    val mockedDataSource: DataSource= mock[DataSource]
    val mockDynamicFrame: DynamicFrame = mock[DynamicFrame]
    val mockDataFrame: DataFrame = mock[DataFrame]
    assert(wrappedGlueContext.glueContext === mockGlueContext)

    when(mockGlueContext.getCatalogSource(anyString, anyString, anyString)).thenReturn(mockedDataSource)

 }
}

最后一次when()调用会引发以下错误:

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers! 0 matchers expected, 3 recorded: This exception may occur if matchers are combined with raw values: //incorrect: someMethod(anyObject(), "raw String"); When using matchers, all arguments have to be provided by matchers. For example: //correct: someMethod(anyObject(), eq("String by matcher")); For more info see javadoc for Matchers class.

的定义getCatalogSource()如下所示

 def getCatalogSource(database: String, tableName: String, redshiftTmpDir: String = "",
                   transformationContext: String = "", pushDownPredicate: String = "",
                   additionalOptions: JsonOptions = JsonOptions.empty, catalogId: String = null): DataSource = {

为什么0 matchers expected当我在getCatalogSource()模拟对象上调用方法时会说

维克多崔

问题是getCatalogSource()我没有使用我的匹配器传递默认参数。我将测试中的方法调用更改为

 when(mockGlueContext.getCatalogSource(anyString, anyString, anyString, anyString, anyString, any(), any())).thenReturn(mockedDataSource)

并且测试通过了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无效使用参数匹配器!预计有0个符合条件的记录,有1个记录

来自分类Dev

无效使用参数匹配器

来自分类Dev

Mockito varargs参数匹配器的无效使用

来自分类Dev

Mockito:0 个匹配器,1 个记录

来自分类Dev

Mockito中的anyString()抛出参数匹配器的无效使用

来自分类Dev

Mockito中的anyString()抛出参数匹配器的无效使用

来自分类Dev

根据匹配的非无效记录转换无效记录

来自分类Dev

按匹配记录排序

来自分类Dev

获取匹配记录的数量

来自分类Dev

Haskell记录模式匹配

来自分类Dev

在日期之间匹配记录

来自分类Dev

按匹配记录排序

来自分类Dev

获取不匹配的记录

来自分类Dev

模式匹配器获取ArrayIndexOutOfBoundsException:0

来自分类Dev

Haskell“无法将预期类型“ a”与实际类型“ [a0]”匹配”

来自分类Dev

当不存在匹配记录时,强制返回值“ 0”

来自分类Dev

当不存在匹配记录时,强制返回值“ 0”

来自分类Dev

如何合并表并将不匹配的记录包含为 0 而不是 null?

来自分类Dev

EasyMock在没有匹配器的方法调用记录上抛出匹配器错误?

来自分类Dev

无法将预期的类型“ IO()”与实际类型“ a0-> m0 a0”匹配

来自分类Dev

无法将预期的类型“ IO()”与实际类型“ a0-> m0 a0”匹配

来自分类Dev

jQuery Datatable:使用search()的匹配记录数

来自分类Dev

使用BigQuery SQL语法匹配记录

来自分类Dev

使用ActiveRecord匹配记录中的数组

来自分类Dev

TSQL-折叠匹配记录

来自分类Dev

遍历行并记录匹配对

来自分类Dev

大量记录之间的模糊匹配

来自分类Dev

左联接排除匹配记录?

来自分类Dev

查询多对多记录匹配

Related 相关文章

热门标签

归档