【问题标题】:Mockito Error "Value must not be null" on when thenReturn with any()当 thenReturn with any() 时,Mockito 错误“值不能为空”
【发布时间】:2019-04-24 17:12:54
【问题描述】:

我的单元测试中有以下代码来模拟数据库调用:

Mockito.when(valueRepository.findAllByDateBetweenAndValueContent_BoolVal(
        any(LocalDate.class),
        any(LocalDate.class),
        anyBoolean()
)).thenReturn(new ArrayList<>());

每当我尝试运行我的代码时,我都会收到以下错误:

org.springframework.dao.InvalidDataAccessApiUsageException: Value must not be null!; nested exception is java.lang.IllegalArgumentException: Value must not be null!

我尝试弄乱返回值和输入(任何...),但我找不到解决方案,我真的不明白什么值是 null / spring 抱怨什么。

valueRepository - 变量已正确初始化,我通过调试检查它不为空。

【问题讨论】:

    标签: java spring unit-testing junit mockito


    【解决方案1】:

    我发现我的错误:我使用 Autowired 而不是 MockBean 插入了 valueRepository 变量:

    错误/之前:

    @Autowired
    ValueRepository valueRepository;
    

    正确/之后:

    @MockBean
    ValueRepository valueRepository;
    

    有了这个改变,它现在可以工作了。 不幸的是,错误消息不是很有帮助

    【讨论】:

    • 错误信息中有InvalidDataAccessApiUsageException。这意味着真正的方法被调用 ==> valueRepository 不是 Mock。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2014-12-28
    • 1970-01-01
    相关资源
    最近更新 更多