【问题标题】:How to mock manifest entries when unit testing with jcabi-manifests?使用 jcabi-manifests 进行单元测试时如何模拟清单条目?
【发布时间】:2014-12-08 10:26:25
【问题描述】:

这是 API 的官方文档严重缺乏与实际提供的 API 同步的罕见情况之一。

因此,jcabi-manifests API 文档明确指出 here 可以使用实用程序类 Manifests 静态模拟清单条目。不幸的是,上述页面中描述的静态方法 - 例如inject()、snapshot()、revert() - actual API 中缺少。

是否有人能够使用据称与 jcabi-manifests 一起提供的清单模拟功能?如果是,怎么做?

【问题讨论】:

    标签: java unit-testing mocking manifest jcabi


    【解决方案1】:

    看起来文档确实有点乱。您需要版本 0.8.2。这是所有模拟功能仍然存在的地方。但是最新版本中存在更好的模拟方式。不要使用静态方法,而是将Manifests 的实例传递给您的类并模拟它的整个实例。在最新版本中,我们摆脱了静态方法,因为它们很难在并发线程中进行测试。如果您有更多问题,请向 Github 提交工单,我们会尽力提供帮助:https://github.com/jcabi/jcabi-manifests/issues

    【讨论】:

      【解决方案2】:

      对于Manifests 的更新版本(当前为1.1),解决方案是使用Manifests.DEFAULT,这是一个可以操作的映射。因此,对于我的测试,我所做的是添加我想要的属性,然后将其作为拆卸方法的一部分删除:

        @After
        public void tearDown() {
          Manifests.DEFAULT.remove("my-client-version");
        }
      
        @Test
        public void testGetClientVersion() {
          Manifests.DEFAULT.put("my-client-version", "1.2.3");
          final String actual = VersionUtils.getClientVersion();
          assertThat(actual).isEqualTo("1.2.3");
        }
      

      【讨论】:

        猜你喜欢
        • 2018-04-04
        • 2021-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-19
        • 1970-01-01
        • 2012-02-16
        相关资源
        最近更新 更多