【问题标题】:How can I mock the singleton object (scala 2.7.11)?如何模拟单例对象(scala 2.7.11)?
【发布时间】:2016-02-02 08:10:31
【问题描述】:

我想模拟单例对象? 在scalamock-3中似乎是不可能的

我发现easyMock和powerMock可以模拟单例对象 (来自https://github.com/fabura/scala-MockStaticObjects

但是,我无法完成这项工作? 有什么想法吗?

【问题讨论】:

  • 你为什么需要它?你想解决什么问题?
  • 我有一个数据库单例对象,我想模拟这个数据库管理器。
  • 创建一个描述数据库操作的特征并在单例对象中实现这个特征不是更好吗?因此你可以模拟这个特征
  • 你真的是说 scala 2.7.11 吗?这绝对是古老的,它将严重限制您可以使用语言和生态系统做什么。

标签: scala mockito powermock scalatest scalamock


【解决方案1】:

如果单例对象有一个静态的 .getInstance 方法,它是相当容易模拟的。

您需要执行以下操作 在你的测试类的顶部

@RunWith(PowerMockRunner.class) @PrepareForTest(Singleton.class)

然后模拟单例

mockStatic(Singleton.class); Singleton mockSingleton = mock(Singleton.class); when(Singleton.getInstance()).thenReturn(mockSingleton);

您希望返回的单例具有的任何值我相信您必须在“何时”之前设置示例:when(mockSingleton.toString()).thenReturn("I'm a mock");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-24
    • 2011-04-04
    • 2013-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多