【问题标题】:How to mock Environment Interface如何模拟环境接口
【发布时间】:2016-11-30 06:53:08
【问题描述】:

我必须使用 Environment 接口从属性文件中获取路径。在 Junits 中,我无法模拟环境接口。下面是我的代码。如果我要调用提到的方法,我想要一些随机的东西。我该怎么做?

@Mock
    private Class object;
 @InjectMocks
    Class2 object2;

Mockito.when(object.getFilePath()).thenReturn("Random String");

【问题讨论】:

  • 环境接口是你自己的接口还是来自某个库的接口?
  • 是框架接口... org.springframework.core.env.Environment; @davidxxx
  • 你可以使用 Spring 中的 MockEnvironment
  • 你能告诉我如何使用 Spring 的 MockEnvironment 吗?
  • 我贴了一个简单的例子。如果您遇到问题,请编辑您的问题以提供有关您需求的更多详细信息。

标签: java testing junit mockito


【解决方案1】:

正如我在评论中所说,您不需要 Mockito,您可以使用 MockEnvironment 类从 Spring 中模拟 Environment
您可以通过这种方式设置值:

    MockEnvironment environment = new MockEnvironment();
    environment.setProperty("yourKeyOne", "yourValue1");
    environment.setProperty("yourKeyTwo", "yourValue2");

并且根据你的需要,你可以使用这个环境变量。 例如,这里有一个 AnnotationConfigWebApplicationContext 实例:

    AnnotationConfigWebApplicationContext context = new  AnnotationConfigWebApplicationContext();
    context.setEnvironment(environment);

【讨论】:

    【解决方案2】:

    如果您使用的是 Mockito,您可以按照以下方式进行操作。

    @RunWith(MockitoJUnitRunner.class)
    class SampleMockitoTest {
    
        @Mock
        private Environment mockEnvironment;
    
        @Test
        public void sampleTest() {
            //use mockEnvironment here
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-09
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      相关资源
      最近更新 更多