存根链函数调用产生 NullPointerException

在我的 Spring Boot 项目中,我有一个测试,我想存根一个链式函数调用。

要测试的函数调用是:

private String sniffPayload(HttpServletRequest request) throws IOException {
        return request.getReader().lines().collect(Collectors.joining(System.lineSeparator()));
    }

在我的单元测试中,我使用 Mockito 来模拟HttpServletRequest

import org.springframework.boot.test.mock.mockito.MockBean;

@MockBean
private HttpServletRequest mockedRequest;

然后,在我的测试函数中:

    @Test
    void testMyFunction() throws Exception {

     // I try to stub the function return 
     // But get NullPointerException at runtime

 when(mockedRequest.getReader().lines().collect(Collectors.joining(System.lineSeparator()))).thenReturn("FooBarData");

    ...
    }

当我运行测试时,我得到NullPointerException了执行存根的代码行when(mockedRequest.getReader().lines().collect(Collectors.joining(System.lineSeparator()))).thenReturn("FooBarData");

为什么?NullPointerException在存根链接函数返回时如何摆脱这种情况

第二

Afaik@MockBean不 create deep stub mocks,这意味着不支持链接模拟调用。

你的问题是mockedRequest.getReader()返回空值。

您可以只切换到使用 mockito
(如果您不需要任何自动装配和诸如此类的东西/
imho 在这种情况下似乎不相关HttpServletRequest

@Mock(answer = Answers.RETURNS_DEEP_STUBS)


否则,您必须为每个调用的方法提供不同的模拟。

Stream stream = Mockito.mock(Stream.class);
when(stream.collect(Collectors.joining(System.lineSeparator()))).thenReturn("FooBarData");

BufferedReader reader = Mockito.mock(BufferedReader.class);
when(reader.lines()).thenReturn(stream);

when(mockedRequest.getReader()).thenReturn(reader)

模拟流非常难看,因此您可能希望用提供匹配答案的真实流替换该部分。

例如:

Stream<String> stream = Stream.of("FooBarData");

when(reader.lines()).thenReturn(stream);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

调用链函数会产生开销吗?

来自分类Dev

setAdapter()函数上的NullPointerException

来自分类Dev

方法调用可能会产生java NullpointerException

来自分类Dev

警告:方法调用 getAssets 可能会产生 nullpointerexception

来自分类Dev

NullPointerException在Java中调用方法

来自分类Dev

调用GetText()时发生NullPointerException

来自分类Dev

从android调用Web服务-NullPointerException

来自分类Dev

NullPointerException调用标签片段ViewPager

来自分类Dev

尝试调用方法,但出现NullPointerException

来自分类Dev

调用GetText()时发生NullPointerException

来自分类Dev

调用readValue时,Json NullPointerException

来自分类Dev

调用getDefaultSharedPreference时发生NullPointerException

来自分类Dev

调用 onClickListener 时出现 NullPointerException

来自分类Dev

调用 PlacePicker 时出现 NullPointerException

来自分类Dev

Service的构造函数中的NullPointerException

来自分类Dev

Java中的分区函数NullPointerException

来自分类Dev

构造函数中的Java NullPointerException

来自分类Dev

为什么递归调用此函数不会引发NullPointerException

来自分类Dev

在foreach循环内产生Spark NullPointerException

来自分类Dev

findViewById()可能会产生NullPointerException

来自分类Dev

方法调用“ toString”可能会产生“ java.lang.NullPointerException”吗?

来自分类Dev

在FragmentManager上调用popBackstackImmediate()时,getHandler()NullPointerException

来自分类Dev

调用Window.setVisible()时发生NullPointerException

来自分类Dev

调用getter方法时发生NullPointerException

来自分类Dev

其他类的调用方法给出NullPointerException

来自分类Dev

调用readValue时出现Json NullPointerException

来自分类Dev

调用Retrofit.Call <>时发生NullPointerException

来自分类Dev

当为BroadcastReceiver调用onReceive时发生NullPointerException

来自分类Dev

调用ResultSet.getDate()时发生NullPointerException

Related 相关文章

  1. 1

    调用链函数会产生开销吗?

  2. 2

    setAdapter()函数上的NullPointerException

  3. 3

    方法调用可能会产生java NullpointerException

  4. 4

    警告:方法调用 getAssets 可能会产生 nullpointerexception

  5. 5

    NullPointerException在Java中调用方法

  6. 6

    调用GetText()时发生NullPointerException

  7. 7

    从android调用Web服务-NullPointerException

  8. 8

    NullPointerException调用标签片段ViewPager

  9. 9

    尝试调用方法,但出现NullPointerException

  10. 10

    调用GetText()时发生NullPointerException

  11. 11

    调用readValue时,Json NullPointerException

  12. 12

    调用getDefaultSharedPreference时发生NullPointerException

  13. 13

    调用 onClickListener 时出现 NullPointerException

  14. 14

    调用 PlacePicker 时出现 NullPointerException

  15. 15

    Service的构造函数中的NullPointerException

  16. 16

    Java中的分区函数NullPointerException

  17. 17

    构造函数中的Java NullPointerException

  18. 18

    为什么递归调用此函数不会引发NullPointerException

  19. 19

    在foreach循环内产生Spark NullPointerException

  20. 20

    findViewById()可能会产生NullPointerException

  21. 21

    方法调用“ toString”可能会产生“ java.lang.NullPointerException”吗?

  22. 22

    在FragmentManager上调用popBackstackImmediate()时,getHandler()NullPointerException

  23. 23

    调用Window.setVisible()时发生NullPointerException

  24. 24

    调用getter方法时发生NullPointerException

  25. 25

    其他类的调用方法给出NullPointerException

  26. 26

    调用readValue时出现Json NullPointerException

  27. 27

    调用Retrofit.Call <>时发生NullPointerException

  28. 28

    当为BroadcastReceiver调用onReceive时发生NullPointerException

  29. 29

    调用ResultSet.getDate()时发生NullPointerException

热门标签

归档