【问题标题】:Unit testing functional interface单元测试功能接口
【发布时间】:2017-12-28 10:37:37
【问题描述】:

我有一个这样的公共方法:

public List<Resource> getResource(Function<InputStream, List<Resource>> funcToExecute)
{
    InputStream inp = getInputStream();
    return funcToExecute.apply(inp);
}

如何对这个功能进行单元测试?如何在单元测试中建立输入流和要返回的资源列表之间的关系?

【问题讨论】:

  • 你能分享一下 getInputStream() 的作用吗?
  • getInputStream() 组合从服务器读取的多个文件的输入流后返回一个SequenceInputStream。

标签: java unit-testing mocking mockito functional-interface


【解决方案1】:

这里没有太多逻辑 - 只是为了确保该函数应用于您的 InputStream,因此使用类似 Mockito.verify 的东西可能是正确的方法。

不幸的是,InputStreams 通常不会覆盖equals(Object),因此您需要一些解决方法。一种可能的选择是 spy 你的 getInputStream() 方法:

@Test
public void testGetResource() {
    SomeClass someClass = Mockito.spy(new SomeClass());
    InputStream is = Mockito.mock(InputStream.class);
    Mockito.doReturn(is).when(someClass).getInputStream();

    Function<InputStream, List<Resource>> mockFunc = 
        Mockito.mock(Function.class);

    someClass.getResource(mockFunc);

    Mockito.verify(mockFunc).apply(someClass.getInputStream());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    相关资源
    最近更新 更多