问题标签 [scalamock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
278 浏览

scala - 如何模拟以视图边界为参数的函数

我在Scala中有一个函数如下

我正在尝试使用 mockito 来模拟这个函数,如下所示

尽管函数中只有一个参数,但出现以下错误

org.mockito.exceptions.misusing.InvalidUseOfMatchersException:参数匹配器的使用无效![信息] 预计 2 个匹配器,1 个记录:

0 投票
1 回答
1655 浏览

scala - Scala 模拟,MockFactory 预计因“意外调用”而失败

我正在尝试遵循此文档-模拟该函数并检查它是否已被调用scalatestscala-mock

结果:

为什么?如何让它通过 scalatest + scala-mock ?

--

作为部门,我使用:

0 投票
1 回答
1023 浏览

scala - Scalamock:无法模拟具有类型参数和多个隐式变量的函数

这个问题是https://github.com/paulbutcher/ScalaMock/issues/79中提到的已解决问题的扩展

我有以下要模拟的特征:

我正在尝试如下模拟 HttpClient

当我尝试模拟反序列化函数时会出现问题。如上所述,该deserialize方法由一个 Typed ParameterT和一个 type 参数HttpResponse,以及在解组响应时使用的另外 2 个隐式参数组成。

因此,问题是如何使用 ScalaMock 来模拟deserialize函数并在模拟时指定多个隐式参数。这不起作用

问题是我不能_用来指定两个隐式参数。我不知道如何实现这一点。请帮助如何模拟给定的功能

我正在使用以下库:

  • 斯卡拉版本 2.11.8
  • 最新版本 3.0.0
  • scalamock 版本 3.5.0

虽然由于使用了多个,第二次尝试甚至无法编译_,但第一次尝试导致以下异常:

0 投票
1 回答
44 浏览

scala - 如何在测试中使用 ScalaMock?

这是否可以在测试中而不是在实际代码中使用 ScalaMock 存根?我想运行需要我现在要存根的其他服务女巫的 http 服务。在文档中找不到如何实现这一点。

0 投票
1 回答
696 浏览

scala - scalamock newexpectationexception - [scala,scalamock,akka-http]

我在玩 ScalaMock。当我尝试使用 ScalaMock 模拟测试用例中的对象时,我写了一个 KISS 版本的错误。

我得到的错误如下

不满意的期望:

预期:inAnyOrder { inAnyOrder { MetricsRegistry.recordValue(*) 两次(从未调用 - 不满意)} }

实际:ScalaTestFailureLocation:ScalaMockError01Spec at (ScalaMockError01Spec.scala:22) org.scalatest.exceptions.TestFailedException:不满意的期望:

预期:inAnyOrder { inAnyOrder { MetricsRegistry.recordValue(*) 两次(从未调用 - 不满意)} }

实际:在 org.scalamock.context 的 ScalaMockError01Spec.newExpectationException(ScalaMockError01Spec.scala:22) 的 ScalaMockError01Spec.newExpectationException(ScalaMockError01Spec.scala:22) 的 org.scalamock.scalatest.AbstractMockFactory$class.newExpectationException(AbstractMockFactory.scala:51)。 MockContext$class.reportUnsatisfiedExpectation(MockContext.scala:45) at ScalaMockError01Spec.reportUnsatisfiedExpectation(ScalaMockError01Spec.scala:22) at org.scalamock.MockFactoryBase$class.verifyExpectations(MockFactoryBase.scala:108) at org.scalamock.MockFactoryBase$class.withExpectations (MockFactoryBase.scala:56) at ScalaMockError01Spec.withExpectations(ScalaMockError01Spec.scala:22) at org.scalamock.scalatest.AbstractMockFactory$class.withFixture(AbstractMockFactory.scala:34) 在 org.scalatest.FlatSpecLike$class.invokeWithFixture$1(FlatSpecLike.scala:1679) 在 org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala: 的 ScalaMockError01Spec.withFixture(ScalaMockError01Spec.scala:22): 1692) 在 org.scalatest.FlatSpecLike$$anonfun$runTest$1.apply(FlatSpecLike.scala:1692) 在 org.scalatest.SuperEngine.runTestImpl(Engine.scala:289) 在 org.scalatest.FlatSpecLike$class.runTest(FlatSpecLike .scala:1692) 在 org.scalatest.FlatSpec.runTest(FlatSpec.scala:1685) 在 org.scalatest.FlatSpecLike$$anonfun$runTests$1.apply(FlatSpecLike.scala:1750) 在 org.scalatest.FlatSpecLike$$anonfun $runTests$1.apply(FlatSpecLike.scala:1750) at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:396) at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1。apply(Engine.scala:384) at scala.collection.immutable.List.foreach(List.scala:381) at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384) at org.scalatest.SuperEngine.org$ scalatest$SuperEngine$$runTestsInBranch(Engine.scala:373) at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply(Engine.scala:410) at org.scalatest.SuperEngine$$anonfun$traverseSubNodes$1$1.apply (Engine.scala:384) at scala.collection.immutable.List.foreach(List.scala:381) at org.scalatest.SuperEngine.traverseSubNodes$1(Engine.scala:384) at org.scalatest.SuperEngine.org$scalatest $SuperEngine$$runTestsInBranch(Engine.scala:379) at org.scalatest.SuperEngine.runTestsImpl(Engine.scala:461) at org.scalatest.FlatSpecLike$class.runTests(FlatSpecLike.scala:1750) at org.scalatest.FlatSpec .runTests(FlatSpec.scala:1685) 在 org.scalatest.Suite$class.run(Suite.scala:1147) 在 org.scalatest.FlatSpec.org$scalatest$FlatSpecLike$$super$run(FlatSpec.scala:1685) 在 org.scalatest.FlatSpecLike$ $anonfun$run$1.apply(FlatSpecLike.scala:1795) at org.scalatest.FlatSpecLike$$anonfun$run$1.apply(FlatSpecLike.scala:1795) at org.scalatest.SuperEngine.runImpl(Engine.scala:521)在 org.scalatest.FlatSpecLike$class.run(FlatSpecLike.scala:1795) 在 ScalaMockError01Spec.org$scalatest$BeforeAndAfterAll$$super$run(ScalaMockError01Spec.scala:22) 在 org.scalatest.BeforeAndAfterAll$class.liftedTree1$1(BeforeAndAfterAll .scala:213) at org.scalatest.BeforeAndAfterAll$class.run(BeforeAndAfterAll.scala:210) at ScalaMockError01Spec.run(ScalaMockError01Spec.scala:22) at org.scalatest.tools.SuiteRunner.run(SuiteRunner.scala:45)在组织。scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRun$1.apply(Runner.scala:1340) at org.scalatest.tools.Runner$$anonfun$doRunRunRunDaDoRun$1.apply(Runner.scala:1334) at scala.collection.immutable. List.foreach(List.scala:381) at org.scalatest.tools.Runner$.doRunRunRunDaDoRunRun(Runner.scala:1334) at org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1011 ) 在 org.scalatest.tools.Runner$.withClassLoaderAndDispatchReporter(Runner.scala:1500) 在 org.scalatest.tools.Runner 的 org.scalatest.tools.Runner$$anonfun$runOptionallyWithPassFailReporter$2.apply(Runner.scala:1010) $.runOptionallyWithPassFailReporter(Runner.scala:1010) at org.scalatest.tools.Runner$.run(Runner.scala:850) at org.scalatest.tools.Runner.run(Runner.scala) at org.jetbrains.plugins。斯卡拉。testingSupport.scalaTest.ScalaTestRunner.runScalaTest2(ScalaTestRunner.java:138) 在 org.jetbrains.plugins.scala.testingSupport.scalaTest.ScalaTestRunner.main(ScalaTestRunner.java:28)

我可以知道为什么我会收到错误吗?

谢谢

0 投票
2 回答
424 浏览

scala - ScalaMock:存根仅适用于第一次测试

最近我开始在我的单元测试中使用 ScalaMock 库,它运行良好,直到我想在多个测试中使用相同的 stab(在测试套件中全局声明)。

这是一个例子:

如何让“存款测试”通过?

0 投票
1 回答
2563 浏览

scala - ScalaMock,意外调用:在测试之间共享模拟实例时

我正在Scala 2.10使用ScalaMock 3.6.

我有一个非常简单的测试用例,有 4 个测试场景。我mock为这些测试创建了一个对象(模仿文件系统):

现在:

  • 第一个测试不使用任何模拟方法(但需要模拟对象)
  • 第二次测试仅使用existing模拟方法
  • 第三次测试同时使用existingnot existing模拟方法
  • 第四次测试使用所有方法,(也createFile

现在,由于某种原因,当一起运行所有这些测试时,第四次测试失败给我以下错误。如果单独运行,它将通过。

另一个解决方法是在第四个测试场景中复制粘贴mock声明及其行为。it should { ... }然后测试工作(单独和一起)。

为什么全局mock实例失败?如果需要,我可以尝试准备一个类似的测试场景作为单独的sbt项目。

0 投票
1 回答
495 浏览

scala - Scalatest Scalamock 以两种方式声明的相同函数的行为不同

如果我有一个 Scala 特征,其中定义了两个函数,一个仅使用签名定义,另一个使用def foo : Int => String参数和返回类型声明的函数,def bar(myInt : Int): String那么我会为这些方法获得不同的行为。

仅签名失败

IntellJ 说有Too many arguments for method whenexpected: FunctionAdapter0[Boolean], actual: MatchAny

SBT 说:

这让我想知道:

  1. 这两种类型的函数声明有什么区别?我认为它们是等价的,直到现在我似乎都可以互换使用它们。
  2. 是否可以使用foo: Int => String带有defStub.foo _ when 42 return "yay"语法的签名函数定义?
0 投票
1 回答
351 浏览

scala - 无法在 ScalMock 中使用 Array 参数创建存根

这是我尝试实现的一个示例。存根总是返回空值,但如果我改变Array(1L)它就*可以了。数组参数似乎有问题。

0 投票
1 回答
584 浏览

scala - ScalaMock 和蛋糕模式 - 为什么我的存根没有被调用?

我有一个使用 Cake 模式的 Scala 应用程序:

当我天真地开始测试 的实现时consumer.write,我尝试了这样的事情(使用 ScalaMock):

测试失败,因为我没有对实际实现进行存根:

这个问题突出了一个事实,即我真的不了解 Scala。我不知道 stub-3 是从哪里来的。根据 damirv 在这个问题中的回答,我已经成功地重新设计了我的测试,但我希望在这里得到一些见解,以帮助我更好地理解为什么我实际上并没有在上面的测试中嘲笑我认为我的想法?

Fwiw,我从 C# 背景来到 Scala。

更新:根据下面的答案,这有效: