问题标签 [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 投票
1 回答
1525 浏览

scala - 使用 ScalaMock 在模拟类上测试嵌套方法调用

总的来说,我对 ScalaMock 和模拟都是新手。我正在尝试测试一个方法,该方法调用另一个(模拟)类中的方法,然后在返回的对象上调用一个方法。

详细资料:

所以我正在使用 ScalaTest,这个测试涉及五个类......

我正在测试的子指令

必须为测试模拟的机器

构造机器对象所需的寄存器

我作为原始 Machine 类创建的 MockableMachine 没有空的构造函数,因此(据我了解)不能被模拟

最后是我的测试类 SubInstructionTest 编译但抛出下面的异常。

抛出:

java.lang.NoSuchMethodException: Registers.mock$apply$0()

-

我一直在寻找一种简单的方法来模拟这门课几个小时,但一无所获。目前我已经确定了下面详述的解决方法,但我的印象是,模拟会为测试我的 SubInstruction 类的问题提供一个不那么复杂的解决方案。

解决方法:

删除 MockableMachine 类并创建一个 CustomMachine 类,该类扩展 Machine 并用构造时提供的 mockedRegisters 替换寄存器值。

我作为原始创建的 MockableRegisters 类没有空构造函数,因此(据我了解)不能被模拟

和以稍微不同的方式编写的 SubInstructionTest 类

如前所述,这对我来说感觉像是一种解决方法,难道没有更简单的方法可以做到这一点(可能类似于我最初的尝试)?

我刚刚包含了提出问题的基本代码,但是您可以在我的GitHub 帐户上找到完整的代码。

0 投票
0 回答
124 浏览

scala - ScalaMock3可以模拟java.lang.Thread.sleep吗

有没有办法模拟睡眠并对其设定期望?

例如,在 Ruby 中,我只需将存根添加到 Thread。但是对于 Scalamock,我不确定如何将该模拟注入到类中。

0 投票
2 回答
973 浏览

scala - 为什么 specs2 + scalamock 测试不在 IntelliJ 中运行?检测到多个套件特征

我正在尝试从 Intellij IDEA 14 的 Windows 和 Mac 版本的 IDEA 运行 Specs2 测试。我使用两者gen-idea和内置的 SBT 插件生成了想法项目文件,并获得了相同的结果......

当我尝试运行它们时,我得到

我已经添加了软件包并将“搜索测试”切换为in single module但仍然无济于事。我还在运行配置中收到以下消息。

类似的帖子如何在 IntelliJ IDEA 下运行所有​​ Specs2 测试?没有帮助,从 SBT,BTW 一切都运行良好。我也不能通过捷径运行单个测试:'(

我怀疑它是 scalamock 和 specs2 的组合,就好像我从我的中删除以下内容一样build.sbt,我可以再次运行它们。

这是运行配置。

在此处输入图像描述

0 投票
1 回答
507 浏览

java - Scalamock测试Java依赖注入

我使用 Scalamock 对我的 Java 项目进行单元测试。项目包含使用 Java CDI 样式 DI 的类:

如何将模拟作为服务实例注入?使用 Mockito,我可以使用 @InjectMocks,但我绝对想使用 Scalamock。

0 投票
1 回答
2079 浏览

scala - ScalaMock 是否支持模拟(伴随)对象和构造函数?

关于 ScalaMock 模拟(伴生)对象和构造函数的能力存在一些矛盾的说法。ScalaMock页面逐步说明

它也可以模拟:

  • 类 *单例和伴随对象(静态方法)
  • 对象创建(构造函数调用)
  • 具有私有构造函数的类
  • 最终类和具有最终方法的类
  • 运算符(具有符号名称的方法)
  • 重载方法

另一方面,路线图告诉我:

2016 年第一季度 - ScalaMock 4 一旦 scala.meta 可用,我们计划开始开发 ScalaMock 4。如果 scala.meta 兑现承诺,ScalaMock 4 应该能够模拟任何特征,无论其类型多么复杂。

此外,我们预计它还将支持:

  • 改进的语法:mockObject.expects.method(arguments) 而不是:(mockObject.method _) expects (arguments)
  • 模拟对象创建(构造函数)
  • 模拟单例和伴随对象(静态方法)
  • 使用最终方法或私有构造函数模拟最终类和类

那么,什么是正确的?当前版本(ScalaMock 3.2)是否能够模拟对象和构造函数?

0 投票
3 回答
2169 浏览

scala - Scalamock:如何获得代理模拟的“期望”?

我将 Scalamock 与 ScalaTest 一起使用,并试图模拟 Java 接口。我目前有:

现在我想做

但编译器没有找到expects.

我导入org.scalatest._org.scalamock.scalatest._. 我还缺少什么?

0 投票
1 回答
1688 浏览

scala - scalamock:子类型上的通配符参数匹配

在我的课堂上,我有两个版本的方法。一个取一个Exception,另一个取一个String

JMock中,我可以根据其类型模拟对方法的调用。请注意,我正在使用一个子类型Exception来具体说明我在测试中所期望的内容。

在 中Scalamock,我可以使用通配符来匹配

当我尝试匹配特定的子类型时,以下内容无法编译(我意识到这在 Scala 中没有意义)。

如何将with(any(SubTypesException.class))in转换JMockScalamock?我可以想象使用谓词匹配(where),这是要走的路吗?

编辑:考虑一下,JMockwith(any(SubTypedException))更多的是让编译器满意并表达意图。据我了解,它Matcher是一个IsAnything匹配器,因此如果抛出不同类型的异常,测试实际上不会失败。

因此,在正确的情况下,它可能需要 Scalamock 更多地捕捉意图通过测试。解释如何instanceOf在 Scalamock 中执行类似操作的奖励积分。

0 投票
1 回答
265 浏览

specs2 - scalamock / specs2:如果我没有断言怎么办?仅在 IsolatedMockFactory 中的期望

如果我实际上没有像count must_== 1在 Specs2 测试中那样的显式断言,我会收到一个错误,表明找不到隐式断言。

很公平。

但是如果我也使用 scalamock 的MockContext,我可以只依赖期望而不是断言;模拟某些东西,scalamock 将验证方法是否被调用等;

但是,如果我尝试通过混合来共享上下文设置IsolatedMockFactory,我又回到了编译器故障。任何想法如何解决它?

0 投票
1 回答
1406 浏览

scala - Scalamock scalatest - 无法存根

我创建了一个类似于下面提到的工作流处理器特征:

现在我想对这段代码进行单元测试。所以我创建了一个更好的小 scalatest scalamock 测试套件:

我的期望是将此存根设置在不同的类上并测试该类。存根(t.stage2 和 t.stage3)编译良好,但以下语句无法编译。

编译器报告以下问题:

有人可以帮忙吗?我发现为 Scala 类编写单元测试以及模拟它们非常困难。

来自 Build.sbt 的 Scalatest 版本:

0 投票
2 回答
4956 浏览

scala - 模拟不带参数但带有隐式参数的方法

以下不起作用

它失败了:

注意:http ://scalamock.org/user-guide/advanced_topics/ 中给出的示例仅在该方法具有至少一个参数时才有用。所以我们不能像在使用 scalamock 的 scala 中使用 ClassTag 的模拟方法那样使用该解决方案