在类.scala中有一段scala代码,有一个case类Case1,它包含一个Future字段f1,它属于另一个case类Case2的类型。Case2包含SEQ[String]。我将case2对象发送到另一个实例为B的类B
case class Case2(list: Seq[String])
case class Case1(f1: Future[Case2])
class A(b: B) {
def doSomething() {
val case1 = Case1(Future(Case2(List("Hello")))
val result = b.doSomethingElse(case1) // Another future returned
result
}
}
class ATest extends .... Some scalatest libraries {
val bMock = mock[B]
val a = new A(bMock)
"A" should {
"call b" in {
val case1 = Case1(Future(Case2(List("Hello")))
val result = .....Anything....
(b.doSomethingElse _).expects(case1).returning(Future.successful(result))
a.doSomething().futureValue shouldBe .....Something
}
}
}
测试失败,并返回一条消息,即对类B的模拟调用与actual不匹配。它打印预期和实际,但它们在日志中看起来是一样的。
理想情况下,测试应该通过,因为对B的模拟调用与B的实际调用匹配。但我怀疑这是因为case1
包含了一个未来,它将其视为不同的对象。当我替换通配符(b.DoSomethingElse_).expects(*).returning(result)
时。
您无法可靠地检查任何函数或正在进行的计算是否相等,因此:
忘掉在它们上面使用marchers(无论是用于断言还是用于嘲弄)。
(b.doSomethingElse _).expects(*).returning(Future.successful(result))
我创建了一个与下面提到的工作流处理器特性类似的特性: 有人能帮忙吗?我发现为Scala类编写单元测试是非常困难的,而且还会嘲笑它们。 build.sbt中的最缩放版本:
我在和斯卡拉莫克玩。当我试图使用ScalaMock来模拟一个测试用例中的对象时,我编写了一个KISS版本的错误。 应为:inAnyOrder{inAnyOrder{MetricsRegistry.RecordValue(*)两次(从未调用-未满足)}} 实际:ScalatestFailureLocation:ScalaMockError01Spec在(ScalaMockError01Spec.Sc
我试图测试一个类,它具有两个函数:和。加载,调用,然后执行一些操作并返回新的。为举例起见: 使用如何编写测试代码? 我试过: 我希望测试成功通过,并且得到(我知道scalamock用mock替换了所有现有函数,但这不是预期的行为) 编辑:我在mockito中找到了这个引用这个概念的答案,但我不确定scalamock是否支持这种嘲讽,以及为什么要反对这种嘲讽。
下面是代码、json文件和我在执行代码时得到的异常。 //JSON //读取上述JSON格式时发生异常 04-18 07:07:09.089 314 44-31460/?E/DOINBackgroupExcp:无法读取JSON:无法解析日期值“i”(格式:“YYYY-MM-DD”):无法解析的日期:“i”(通过引用链:com.example.admin.myApplication.ShiftPla
操作系统实现了各种算法,以便找出链表中的空洞并将它们分配给进程。 关于每种算法的解释如下。 1. 第一拟合算法 第一拟合算法(First Fit)算法扫描链表,每当它找到第一个足够大的孔来存储进程时,它就会停止扫描并将进程加载到该进程中。 该过程产生两个分区。 其中,一个分区将是一个空洞,而另一个分区将存储该进程。 First Fit算法按照起始索引的递增顺序维护链表。这是所有算法中最简单的实现方
我在Oracle 11g数据库中有一个这样的表 我想知道在给定的时间段内有多少张卡进行了充值,但我希望这些信息按日期分组。如果一张卡的id已经在一个日期计算过,则不应在下一个日期计算(不同)。 这里有一些测试数据 当我像这样执行查询时,总计数为4,这是正确的。 后果 但是,当我尝试这种方法时,我的总数是10。这是因为,当我在某个日期使用“分组依据”并在ID中使用“不同”时,这种区别只适用于分组日期