gpt4 book ai didi

scala - scala : Mockito 中的模拟案例类

转载 作者:行者123 更新时间:2023-11-28 20:01:42 24 4
gpt4 key购买 nike

在我的游戏应用程序中,我打算模拟一个案例类。我能够这样做,但它创建了一个所有成员变量都为空的对象。有没有一种方法可以创建案例类的模拟对象,以便该对象可以初始化一些成员?

case class User(name: String, address: String)    
val mockUser = mock[User]
user.name // null
user.address //null

我如何创建一个 mockUser 以便我可以为名称和地址分配一些值?

编辑:

我需要模拟对象的能力,因为我想要其中一个成员方法的预定义行为。 (此成员方法调用外部服务,我不希望在进行单元测试时调用外部服务。)成员方法在我要测试的另一个成员方法内部调用。

最佳答案

它应该像这样简单:

when(mockUser.name).thenReturn("Bob")

至于:

You should never need to mock case classes. It's like "mocking an integer".

错了。 (恕我直言)

What's wrong with val mockUser = User("mockName", "mockAddress")?

如果你不觉得有什么问题的话就没什么

val mockFoo = FooWith20Properties("1", "2", "3",..."20")

您的测试会工作,但您错过了使用模拟框架来减少测试样板的要点。

话虽如此,认为案例类应该是最终的和那些认为案例类不应该是最终的似乎确实存在分歧。如果你将你的标记为 final,那么如果不求助于同样有争议的东西(例如 Powermock),模拟将无法工作。

关于scala - scala : Mockito 中的模拟案例类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37184528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com