问题标签 [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.
jmockit - 如何使用 scala mock 提供类的替代实现作为测试存根?
我在一个项目中发现我即将贡献一些外部库,为了测试目的,他们设置了一个模拟数据库管理器。然而,这个数据库管理器所做的是创建一个内存数据库并使用它。这是为了测试目的。
使用的框架是 Jmockit。
我试图找出如何在 scalamock 中重现它,但无法弄清楚。
这是如何在 jmockit 中设置的:
有什么可以支持 scalamock 的。我知道这与所有应用程序的开发方式有关。特别是他们如何使用或不使用依赖注入。但是尽管如此,我们有时还是必须处理遗留代码:)(大多数时候)
我唯一看到的是编写存根的所有功能。A - 但是,这并不好。B - 它也不是一个可以保留状态的完整类。所以一切都必须在创建存根的封闭类中进行管理。c - 再一次,遗留代码在类中做了很多有趣的事情,所以我必须重新创建所有代码等等...... d - 我希望重用他们的 MockDatabaseManager。
有什么建议吗?
scalamock - 具有多个参数的scalamock和方法
我正在尝试模拟一个具有多个参数的函数的对象。
我只是试着为它设定期望。也就是说,某种形式:
(item.addMetadata( , , , , , )).expects("","","","","","","")
我只是不知道怎么写。该示例,通常处理一个参数函数: (item.addMetadata _).expects("")
如何处理多个参数?
编辑1
我更改为只是为了编译:
现在问题显然是方法重载了?
我收到以下错误:
作为一个方面,我还应该补充一个事实,即我在模拟一个类而不是一个接口。这是不受我控制的类,有一个私有构造函数,只有一个静态创建方法。所以我也收到以下错误:
scalamock - 如何用 scala mock 模拟一个类
在 scalamock 的文档中,据说:
模拟类、特征类和案例类
是支持的功能之一。
我有以下案例类:
当我做:
我收到以下错误:
我知道我可以为它实现一个接口,但无论如何,这将帮助我更好地理解如何模拟一个案例类/一个具有构造函数的类。
非常感谢,
马塔里
scala - 验证重载函数的无参数版本是否在 scalamock 中被调用
我正在使用 scalamock 并试图验证close()
RabbitMQcom.rabbitmq.client.Channel
类中的方法是否被调用。问题是该close()
方法重载了两个选项:close()
和close(int, String)
. 我想验证是否调用了无参数版本。
我尝试了以下代码:
带有verify()
on 的行无法编译,因为编译器对调用哪个重载函数感到困惑。
如何验证是否调用了重载函数的无参数版本?
scala - 使用 Scalamock 模拟播放 WSRequestHolder 获取方法
我正在尝试使用 ScalaTest 和 ScalaMock 测试以下代码行。
wsClient
type is THttpClient
,它是play.api.libs.ws.WS
.
鉴于:
被正确注入到我的测试类中,测试代码是这样的:
IntelliJ 突出显示mockRequestHolder.get
一个错误:无法解析符号获取。尽管如此,我还是能够运行测试,但模拟显然不起作用,并且我得到:java.util.NoSuchElementException: JsError.get。
当我尝试模拟 的任何其他方法时,模拟正在工作WSRequestHolder
,但不是使用 method get
。
这是 ScalaMock 错误还是我做错了什么?
scala - 在 ScalaMock 中,每当有人新建一个类的实例时,如何返回一个 mockClass?
在 PowerMockito 中,我们可以使用模式“whenNew(MyClass).thenReturn(mockMyClass)”,当有人想要新建一个 MyClass 的实例时,它会收到 mockMyClass 而不是真实的实例。
我们可以在 ScalaMock 或 EasyMock 中做类似的事情吗?我花了一整天的时间来解决这个问题。
这是我的场景,我有两个类 A 和 B。在类 A 中,它将新建一个类 B 的实例。
现在我想测试 A 类,当 A 类创建 B 类的新实例时,我想要返回 B 类的模拟对象(不是真正的 B 类)。
在 Java 中,我可以使用 PowerMock 和 JUnit 轻松处理此问题,但在 Scala 中无法做到。
scala - 使用 scalamock 在测试期间检测到缺少依赖项
我正在尝试使用 scalamock / scalatest 并且在测试过程中总是出错
我的 build.sbt
我的单元测试:
当我运行时sbt test
,出现以下错误:
我该如何解决?
谢谢
scala - 如何用 ScalaMock 编写期望?
我知道这个问题似乎很明显,但是我已经尝试了文档上写的所有内容,并且我无法在任何类上模拟单个方法。
对于这个测试,我将 scalaMock 3 用于 Scala 2.10 和 ScalaTest 2
DateServiceTest.scala
日期服务.scala
这对我来说似乎很简单,但期望是向我抛出这个错误
我在这里做错了吗?还有另一种方法来设置方法的期望吗?
scala - ScalaMock 具有两个参数组的方法
我应该如何模拟这样的事情(来自 WS 库的 Play 的 WSRequest 的 post 方法):
我已经阅读了有关此的 ScalaMock 页面,但没有任何成功。
它也可以被钉住吗?我正在尝试这个没有运气:
scala - 扩展特征的单元测试类-如何在特征中模拟和存根方法?
我正在使用 scalatest 对扩展特征的类进行单元测试(从某种意义上说,我的类将特征用作 mixin)。
该特征包含的方法是辅助方法(最终调用数据库中的一些查找),我想将其存根,以便我可以仅隔离我的类的功能。但是我还没有找到像 Mockito 或 ScalaMock 这样的框架来实现这一点。
问题:可以使用模拟框架来实现吗?如果可以,如何实现?如果没有,我很想知道是否有原因。
例如。
我需要根据 i 的值返回不同的存根答案。类似于 Mockito 的东西 when(myTrait.usefulMethod(1)).thenReturn(10)
我还需要验证是否在具有正确值的特征中调用了不同的方法。
本质上,我是在再次问这个问题,但我注意到这是在 2011 年提出的,事情可能已经发生了变化。可能会有新的框架和新的方法。这个 2001 年的问题也没有询问如何验证特征中的方法。
问题:以这种方式使用 traits-as-a-mixin 是否实际上阻止了使用模拟框架对来自 mixin 的模拟/存根方法进行单元测试的能力?即模拟和存根框架是否依赖于依赖注入的使用?
PS。直到现在我一直在使用 Mockito,但我并不反对使用 scalamock 或任何其他框架。我研究了 scalamock,因为它宣传它可以测试特征,但是从 scalamock 自己的测试看来,虽然它可以模拟特征,但如果该特征作为依赖项传递给类而不是类,则只能存根模拟行为扩展该特征。看这里