问题标签 [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.
scala - 使用 ScalaMock 在模拟类上测试嵌套方法调用
总的来说,我对 ScalaMock 和模拟都是新手。我正在尝试测试一个方法,该方法调用另一个(模拟)类中的方法,然后在返回的对象上调用一个方法。
详细资料:
所以我正在使用 ScalaTest,这个测试涉及五个类......
我正在测试的子指令
必须为测试模拟的机器
构造机器对象所需的寄存器
我作为原始 Machine 类创建的 MockableMachine 没有空的构造函数,因此(据我了解)不能被模拟
最后是我的测试类 SubInstructionTest 编译但抛出下面的异常。
抛出:
java.lang.NoSuchMethodException: Registers.mock$apply$0()
-
我一直在寻找一种简单的方法来模拟这门课几个小时,但一无所获。目前我已经确定了下面详述的解决方法,但我的印象是,模拟会为测试我的 SubInstruction 类的问题提供一个不那么复杂的解决方案。
解决方法:
删除 MockableMachine 类并创建一个 CustomMachine 类,该类扩展 Machine 并用构造时提供的 mockedRegisters 替换寄存器值。
我作为原始创建的 MockableRegisters 类没有空构造函数,因此(据我了解)不能被模拟
和以稍微不同的方式编写的 SubInstructionTest 类
如前所述,这对我来说感觉像是一种解决方法,难道没有更简单的方法可以做到这一点(可能类似于我最初的尝试)?
我刚刚包含了提出问题的基本代码,但是您可以在我的GitHub 帐户上找到完整的代码。
scala - ScalaMock3可以模拟java.lang.Thread.sleep吗
有没有办法模拟睡眠并对其设定期望?
例如,在 Ruby 中,我只需将存根添加到 Thread。但是对于 Scalamock,我不确定如何将该模拟注入到类中。
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
,我可以再次运行它们。
这是运行配置。
java - Scalamock测试Java依赖注入
我使用 Scalamock 对我的 Java 项目进行单元测试。项目包含使用 Java CDI 样式 DI 的类:
如何将模拟作为服务实例注入?使用 Mockito,我可以使用 @InjectMocks,但我绝对想使用 Scalamock。
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)是否能够模拟对象和构造函数?
scala - Scalamock:如何获得代理模拟的“期望”?
我将 Scalamock 与 ScalaTest 一起使用,并试图模拟 Java 接口。我目前有:
现在我想做
但编译器没有找到expects
.
我导入org.scalatest._
和org.scalamock.scalatest._
. 我还缺少什么?
scala - scalamock:子类型上的通配符参数匹配
在我的课堂上,我有两个版本的方法。一个取一个Exception
,另一个取一个String
。
在JMock
中,我可以根据其类型模拟对方法的调用。请注意,我正在使用一个子类型Exception
来具体说明我在测试中所期望的内容。
在 中Scalamock
,我可以使用通配符来匹配
当我尝试匹配特定的子类型时,以下内容无法编译(我意识到这在 Scala 中没有意义)。
如何将with(any(SubTypesException.class))
in转换JMock
为Scalamock
?我可以想象使用谓词匹配(where
),这是要走的路吗?
编辑:考虑一下,JMock
with(any(SubTypedException))
更多的是让编译器满意并表达意图。据我了解,它Matcher
是一个IsAnything
匹配器,因此如果抛出不同类型的异常,测试实际上不会失败。因此,在正确的情况下,它可能需要 Scalamock 更多地捕捉意图并通过测试。解释如何
instanceOf
在 Scalamock 中执行类似操作的奖励积分。
specs2 - scalamock / specs2:如果我没有断言怎么办?仅在 IsolatedMockFactory 中的期望
如果我实际上没有像count must_== 1
在 Specs2 测试中那样的显式断言,我会收到一个错误,表明找不到隐式断言。
很公平。
但是如果我也使用 scalamock 的MockContext
,我可以只依赖期望而不是断言;模拟某些东西,scalamock 将验证方法是否被调用等;
但是,如果我尝试通过混合来共享上下文设置IsolatedMockFactory
,我又回到了编译器故障。任何想法如何解决它?
scala - Scalamock scalatest - 无法存根
我创建了一个类似于下面提到的工作流处理器特征:
现在我想对这段代码进行单元测试。所以我创建了一个更好的小 scalatest scalamock 测试套件:
我的期望是将此存根设置在不同的类上并测试该类。存根(t.stage2 和 t.stage3)编译良好,但以下语句无法编译。
编译器报告以下问题:
有人可以帮忙吗?我发现为 Scala 类编写单元测试以及模拟它们非常困难。
来自 Build.sbt 的 Scalatest 版本:
scala - 模拟不带参数但带有隐式参数的方法
以下不起作用:
它失败了:
注意:http ://scalamock.org/user-guide/advanced_topics/ 中给出的示例仅在该方法具有至少一个参数时才有用。所以我们不能像在使用 scalamock 的 scala 中使用 ClassTag 的模拟方法那样使用该解决方案