gpt4 book ai didi

java - 模拟一个操作被测单元私有(private)字段的闭包

转载 作者:行者123 更新时间:2023-12-01 20:15:21 25 4
gpt4 key购买 nike

我的测试单元中有以下代码:

someDependency.doSomething(element -> {
privateFieldOfUnitUnderTest += element;
});

一些依赖项(我用mockito模拟的)使用lambda函数回调调用方法doSomething(在实际代码中它正在执行一些异步调用),该回调修改被测单元的私有(private)字段。我的问题是如何使用mockito(并且不使用powermocking技术)正确测试它。

我希望模拟方法 doSomething 使用单元测试提供的一些数据来调用回调。

最佳答案

如果您模拟了 someDependency,您可以控制 doSomething() 的所有内容都是传递和返回数据。错过了 doSomething() 的实现。这意味着给定的功能接口(interface)不会在doSomething()内部触发。这意味着即使您可以控制element,它也不会参与其中。

我看到下一个可能的解决方案:

  • someDependency 的 spy 合作​​
  • 调用真正的doSomething()
  • 拥有可以在测试中模拟的 someDependency.getElement()
  • doSomething() 应重新设计以与 getElement()
  • 配合使用

关于java - 模拟一个操作被测单元私有(private)字段的闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45883978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com