如何用scala mock模拟一个类

Maa*_*mon 6 scalamock

在scalamock的文档中,据说:

模拟类,特征和案例类

是支持的功能之一.

我有以下案例类:

case class Thing(private val item: Item)
Run Code Online (Sandbox Code Playgroud)

当我做:

val item = mock[Thing]
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Error:(18, 24) not enough arguments for constructor Thing:
 (item: org.dspace.content.Item)org.iadb.poolpartyconnector.dspaceutils.Thing.
Unspecified value parameter item.
    val item = mock[Thing]
                   ^
Run Code Online (Sandbox Code Playgroud)

我知道我可以为它实现一个接口,但无论如何,这将有助于我更好地理解如何模拟case类/具有构造函数的类.

非常感谢,

Maatari

Paw*_*cha 14

目前,您不能模拟没有定义默认构造函数的类.

您可以通过创建一个已定义默认构造函数并模拟该子类的子类来解决此问题:

class MockableThing extends Thing(null)
val item = mock[MockableThing]
Run Code Online (Sandbox Code Playgroud)