当前位置: 首页 > 知识库问答 >
问题:

scalamock newexpectationexception-[scala,scalamock,Akka-HTTP]

吕永寿
2023-03-14

我在和斯卡拉莫克玩。当我试图使用ScalaMock来模拟一个测试用例中的对象时,我编写了一个KISS版本的错误。

import akka.http.scaladsl.server.Route
import org.scalamock.scalatest.MockFactory
import org.scalatest.FlatSpec
import akka.http.scaladsl.testkit.ScalatestRouteTest
import akka.http.scaladsl.server.Directives._
import org.scalatest.Matchers._

trait MetricsRegistry {
  def recordValue(myString: String): Unit
  def decatMyString(myString: String): Unit
}



class ScalaMockError01Spec extends FlatSpec with MockFactory with ScalatestRouteTest {

def actorRefFactory = system
   lazy val metricsRegistry = mock[MetricsRegistry]

  val route : Route = {
    get{
      complete("Status is OK")
    }
  }

  "MetricDirectives" should "record latency and success count for 200 response" in {
    inAnyOrder {
      (metricsRegistry.recordValue _).expects(*).twice

    }

    Get("/success") ~> route ~> check {
      status.toString() shouldBe "200 OK"
    }
  }
}

应为:inAnyOrder{inAnyOrder{MetricsRegistry.RecordValue(*)两次(从未调用-未满足)}}

实际:ScalatestFailureLocation:ScalaMockError01Spec在(ScalaMockError01Spec.Scala:22)org.scalatest.exceptions.TestFailedException:未满足的期望:

应为:inAnyOrder{inAnyOrder{MetricsRegistry.RecordValue(*)两次(从未调用-未满足)}}

我能知道为什么我会出错吗?

谢谢

共有1个答案

淳于典
2023-03-14

我真傻,我需要调用mocked函数

MetricsRegistry.RecordValue(“我的名字是Billa”)

 类似资料:
  • 可扩展的实时事务处理,我们相信编写出正确的、具有容错性和可扩展性的并发程序太困难了。这多数是因为使用了错误的工具和错误的抽象级别。

  • [04/27/2014 18:09:05.518][ReadScheduler-Akka.actor.Default-Dispatcher-3][Akka://ReadScheduler/User/Collector]从参与者[Akka://ReadScheduler/User/Executor#2127791644]到参与者[Akka://ReadScheduler/User/Collector

  • 我写了一个Akka基本演员,可以处理一些常见的消息。我想通过扩展基执行元(而不是通过基执行元的组合),在子执行元中重用这个基本行为。 我在前面的问题中看到过几种做法。它们都是有效的,但也可以改进: null 下面是两种可供选择的方法,我可以创建子执行元的实例,它结合了常见行为和附加行为: 最后,我可以通过以下方式调用子参与者: 我的实现存在的问题: 就像我之前说过的,我更喜欢在定义子执行元时混合基

  • class下导致new HelloWorld行出现错误: 所以我尝试:,但这会导致编译器错误: 下面的HelloWorld应该如何实现? 阅读其他Scala文档时,要求在扩展Actor的类中定义act方法,然后在该类上调用start方法,是否有理由使用actorOf而不是定义act方法? 以下内容摘自Scala akka docs http://doc.akka.io/docs/akka/2.2.

  • 我有一个监督Akka演员,它使用路由器将消息转发给工人演员。 我有一个封装了管理程序的类,当我调用该类的方法时,它“要求”管理程序做一些事情,然后我使用< code > await . result(the future)等待结果(没有结果我无法继续)。 如果worker抛出异常,我想重新启动抛出异常的worker,我想让调用包装类的代码捕获异常。 我向路由器构造函数传递了一个< code>One

  • 我正在使用Akka HTTP(在Scala中)开发一个REST服务。我希望传入http get请求的参数转换为ZonedDateTime类型。如果我尝试使用String或Int但在使用ZonedDateTime类型时失败,则代码可以正常工作。代码如下所示: 下面是我看到的错误: 如果我向列表中添加多个参数,我会得到一个不同的错误: 下面是一个代码片段,它将重现我看到的问题