scala - 如何测试传递给 ScalarDB 函数的参数
问题描述
我正在使用ScalarDB
. 它提供超过Cassandra
. - https://scalar-labs.github.io/scalardb/javadoc/
ScalarDB
是Java
基于的,我在Scala
代码中使用它
Cassandra
在using中插入值的方法Scalardb
是调用Put
方法。例如。
def add() = {
val putAnswer: Put = new Put(pAnswerKey)
.forNamespace(keyspaceName)
.forTable(tablename)
.withCondition(mutationCondition)
.withValue(new TextValue("answer_id", answer.answer_id.get.toString))
.withValue(new TextValue("image", convertImageToString(imageData)))
.withValue(new TextValue("answer", convertAnswersFromModelToString(answer.answer)))
.withValue(new BigIntValue("creation_year", answer.creationYear.getOrElse(0)))
.withValue(new BigIntValue("creation_month", answer.creationMonth.getOrElse(0)))
.withValue(new TextValue("notes", answer.notes.getOrElse("")))
logger.trace(s"putting answer ${putAnswer}")
transaction.put(putAnswer)
....
}
我想add
通过捕获传递给put
. 我被困在一个我不知道如何将Value
传递给put
. 如何键入强制转换为所需的值?
repository.add(repoTestEnv.mockDistributedTransaction,repoTestEnv.answerTestEnv.answerOfAPracticeQuestion) val argumentCaptor = ArgumentCaptor.forClassPut,Put
verify(repoTestEnv.mockDistributedTransaction,times(1)).put(argumentCaptor.capture())
val argumentsInvoked = argumentCaptor.getAllValues
argumentsInvoked.size mustBe 1
val argument = argumentsInvoked.get(0)
val values = argument.getValues //this is util.Map[String,Value[_]]
logger.trace(s"arguments were ${argument.getValues}") //this prints the following
{answer_id=TextValue{name=answer_id, value=Optional[11111111-1111-1111-1111-111111111111]}, image=TextValue{name=image, value=Optional[{"image":["image1binarydata","image2binarydata"]}]}, answer=TextValue{name=answer, value=Optional[{"answer":[{"filename":"c.js","answer":"some answer"}]}]}, creation_year=BigIntValue{name=creation_year, value=2019}, creation_month=BigIntValue{name=creation_month, value=12}, notes=TextValue{name=notes, value=Optional[some notes]}}
问题 - 我不知道如何进一步选择每个值并进行比较。
解决方案
作为Value
一个接口,我必须像下面这样对它进行类型转换。
val value = values.get("answer_id").asInstanceOf[TextValue]
value.getString.isPresent mustBe true
value.getString.get() mustBe "11111111-1111-1111-1111-111111111111"
推荐阅读
- matlab - 将多边形的一组点压缩为一组较短的点
- .htaccess - 我可以使用重写来显示替代域吗?
- php - Silverstripe 3:我可以在 silverstripe 中为某些页面类型设置自定义错误页面吗?
- python - 步词字谜python
- c# - 如何在 C# 中更新级联选择字段
- reactjs - 如何在 redux 中链接操作
- javascript - 如何做到这一点,当我选择一个选项时,它将显示一个选项并隐藏另一个
- python - 对 python、列表/生成器对象感到困惑
- sql - 用于关系数据库的表和 PK /FK
- ruby-on-rails - 显示值与返回值不一致