scala 中的模拟案例类:Mockito

2024-05-26

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

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

如何创建一个模拟用户,以便我可以为名称和地址分配一些值?

Edit:

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


它应该像这样简单:

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

据,直到...为止:

您永远不需要模拟案例类。这就像“嘲笑 整数”。

错误的。 (恕我直言)

val mockUser = User("mockName", "mockAddress") 有什么问题吗?

如果你不认为有什么问题就没什么

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

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

话虽如此,认为案例类别应该是最终的和不认为应该是最终的之间似乎确实存在分歧。如果你将你的标记为final,那么如果不诉诸像Powermock这样同样有争议的东西,mocking就不会起作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

scala 中的模拟案例类:Mockito 的相关文章

随机推荐

  • ' aria-label='类型错误:不支持的类型 '> 类型错误:不支持的类型

    我需要在 GPU 中运行代码的某些部分cupy代替numpy 所以 我只对这一行做了评论 import numpy as np并用这一行代替它import cupy as np 完整代码 from imutils video import
  • 在 jQuery 中,如果我有一个开始类和结束类,我如何用 div 包装多个元素

    好的 这里有一些 html 我有一些开始和结束课程 但为此我只添加了每门课程 1 门 div span nbsp span div div span nbsp span div div class start lt start span n
  • 如何知道哪个本地应用程序连接到我的套接字(Windows)

    我有一个绑定到某个 TCP 端口的 Windows 服务 该端口用于我的应用程序之间的 IPC 有没有一种编程 WinAPI WinSocket 等 方法可以知道哪个应用程序连接到我的端口 即在我的 Windows 服务中 我想获取连接到我
  • 如何从用户的 5 个输入中找到最大值? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如果用户输入五个值 如何找到这 5 个值之间的最大值 cin gt gt a gt gt b gt gt c gt gt d gt gt e
  • 有没有办法在@Service上使用@ControllerAdvice

    我有一个项目需求 但我没有任何需求 Controller or RestController但我需要为我的服务层提供一个全局异常处理程序 所以我需要配置 ControllerAdvice on Service 请告诉我是否还有其他方法可以做
  • 实体框架代码优先查找与 SingleOrDefault(预加载)

    我正在使用 Entity Framework 4 2 代码优先 来访问我的数据库 我假设如果我使用查询一个实体SingleOrDefault如果实体尚未被跟踪 它只会查询数据库 但情况似乎并非如此 这Find另一方面 方法似乎确实在这样做
  • NestJS - 请求超时

    如何为所有请求设置超时 如果超时则使用自定义 json 进行响应 我尝试使用 import as timeout from connect timeout import NestFactory from nestjs core import
  • Windows 8中有没有特殊的API来挂载ISO文件?

    您可能知道 Windows 资源管理器允许将 ISO 文件装载到虚拟驱动器 有没有任何API可以用来做到这一点 本机函数调用AttachVirtualDisk https msdn microsoft com en us library w
  • 如何备份/恢复corda节点?

    一旦 Corda 节点发生故障 恢复的适当流程是什么 Corda 交易仅与特定业务网络的合格节点共享 而不是与每个节点共享 因此 在恢复故障节点时 从其他节点复制数据将无法正常工作 需要从备份中恢复 但是 备份映像对于其他正确的节点并不完全
  • .m2 的 Docker 缓存在本地不起作用

    考虑这个 gitlab ci yml variables MAVEN OPTS Dmaven repo local root m2 repository cache key M2 paths root m2 repository 当直接在
  • 活动丢失后终止异步任务

    这是我的过程和问题 在此应用程序中 您单击菜单按钮 在此菜单中 您按下切换按钮 该按钮将启动异步任务 每 30 秒发出一次提示音 该任务是在选中切换时持续运行 并在取消选中时取消 只要您留在菜单窗口中 就可以启动和停止该过程 检查切换框 如
  • Git Add - 致命:添加文件失败

    我的 git cmd exe 窗口如下所示 git add NextFolder error unable to create temporary file No such file or directory error NextFolde
  • 在 Retrofit 中的 POST 请求中发送空正文

    我的 api 需要一个空的 json 主体 发出帖子请求时 如何在 Retrofit 和 Jackson 中进行设置 我尝试通过null 和空字符串 以及 但无法让它发挥作用 POST my url Call
  • ASP.NET MVC 3 身份验证/授权 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我对 ASP NET MVC 3 以及一般的 MVC 非常陌生 在 ASP NET Web 窗体中 我使用主体和身份进行身份验证 这是在 MVC 中推
  • Angular2:嵌套 *ngFor 导致“表达式在检查后已更改”

    我有一个 angular2 组件 my tree 我在父 my app 组件中使用它 我的应用程序 如下 Component selector my app providers template
  • html datalist元素自动建议行为

    我注意到 当您将文本字段连接到数据列表时 不同的浏览器在建议文本字段值方面有不同的行为 某些浏览器显示的条目正是以 开始您输入的内容 IE 旧版 chrome 版本 而其他显示的条目contain您作为子字符串输入的内容 firefox 较
  • C# 中两种不同类型的列表

    我目前在为客户提供购物车时遇到问题 他希望能够在 CartItems 之间添加文本 所以我想知道是否有某种方法仍然只有一个列表 我的解决方案是有两个列表 其中一个是 IList 类型 在计算购物车的重量和总体价格时会迭代 而另一个 ILis
  • 使用 useCallback 并使用先前状态作为参数设置新对象状态

    考虑这个带有自定义表单钩子的基本表单字段组件来处理输入更改 import React useState useCallback from react const useFormInputs initialState gt const val
  • Java setLocation() 事故

    我正处于创建一个程序来操作员工 客户系统的开始阶段 现在我刚刚创建了登录 GUI 但我遇到了一些问题 setLocation 方法 我将其设置为 250 250 但这使我的 GUI 高度变得非常疯狂 如果有人能够解决这个问题 我的代码如下
  • scala 中的模拟案例类:Mockito

    在我的游戏应用程序中 我打算模拟一个案例类 我可以这样做 但它创建了一个所有成员变量都为空的对象 有没有办法创建案例类的模拟对象 以便该对象可以初始化一些成员 case class User name String address Stri