当前位置: 首页 > 知识库问答 >
问题:

Scala单元测试-插入一个单例

单于承
2023-03-14

我不熟悉Scala中的单元测试,我找不到一种方法来存根单例对象中定义的函数。

例如:

class Profile {
  def getLatest
    ...
    Feed.getLatestEntries
    ...
}

object Feed {
  def getLatestEntries: Future[List[FeedEntry]] { /* Access some API*/ }
}

我试图对Profile类中定义的getLatest函数进行单元测试。因为我不想在单元测试中通过web实际访问外部API,所以我尝试存根Feed对象及其getLatestEntries函数以返回一些预定义的值。

我研究了ScalaMock、EasyMock和Mockito框架,但找不到一种方法来存根单例对象的方法。ScalaMock状态

为什么所有的模拟框架都不提供这种功能?我该怎么做?存根Feed。获取最新版本

谢谢

共有1个答案

谷梁宜
2023-03-14

我的方法是创建单例的逻辑作为特征,然后让对象扩展特征。这允许我提供Singleton作为默认或隐式参数,但提供了一个用于测试的存根实现

trait FeedLogic {
  def getLatestEntries: Future[List[FeedEntry]] { /* Access some API*/ }
}

object Feed extends FeedLogic

def somethingWantingFeed(...)(feed: FeeLogic = Feed) = { ??? }
 类似资料:
  • 为了让单元测试跑一个批处理的任务,这个框架必须加载这个任务的ApplicationContext,两个注解的触发方式: @RunWith(SpringJUnit4ClassRunner.class):表明这个类需要使用Spring的测试工具 @ContextConfiguration(locations = {…}):表明哪些xml文件包含ApplicationContext @RunWith

  • 在试验并发执行时,我想知道如何实际测试它。执行流程具有副作用性质,创建未来是为了包装独立的执行/处理。 我一直在寻找一些关于如何正确单元测试的好例子,下面的场景(和是我希望测试的方法): 情景#1 情景动机 立即返回,但调用两个执行单独任务的未来(例如,保存分析并将记录存储到数据库)。这些服务调用可以被模拟,但我试图测试的是,一旦我将它们包装在s中,这两个服务都会被调用 场景#2 情景动机 从可以

  • FuelPHP 以自动测试的想法建成,并且基于 PHPUnit 测试框架来包含测试和测试类别。 单元测试是什幺? 单元测试是被写来确保程式码单元(通常是一个函式或方法)是否有执行它原设计行为的自动测试。 这些测试也帮助开发者确保他们对系统所作的任何变更,不会破坏原有运作中的任何东西。 单元测试也是测试驱动开发(TDD)学问的关键原动力。 PHPUnit 你将需要本地安装的 PHPUnit,如果你想

  • 我参考DataframeGenerator示例编写了单元测试,该示例允许您动态生成模拟dataframes 在成功执行以下命令后 在运行以下命令之一时,我会得到输出中显示的错误 输出 null null EDIT-1 My unit-test类包含以下几个方法 而如下所示

  • Android Studio 1.1 添加了单元测试支持,详细请看 Unit testing support。本章的其余部分描述的是 “instrumentation tests”。利用 Instrumentation 测试框架可以构建独立的测试 APK 并运行在真实设备(或模拟器)中进行测试。