gpt4 book ai didi

java - 模拟内部实例化对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:33:03 25 4
gpt4 key购买 nike

我正在编写一个测试类来测试我的“ImporterService”类。该服务读取 InputStream 并根据其数据创建对象。对象(在本例中为 Builder 类)在“ImporterService”类中实例化。要测试我的“ImporterService”类,我需要验证对 Builder 类的调用。为此,我想使用 Mocking 框架,但是如何在“ImporterService”之外创建“Builder”对象的模拟实例?

我的“ImporterService”类的方法如下所示:



public Builder importFrom(BufferedReader reader) throws IOException {
String someValue = readFrom(reader);
Builder builder = new Builder(); // I need to mock this Builder object...
builder.someMethod(someValue); // to see of a method is called with the expected value
}

我正在考虑将 Builder 类的创建移动到一个 protected 方法中,我可以在测试设置时覆盖它。但是这个解决方案对我来说似乎不太好,因为“ImporterService”类正在泄漏一些内部逻辑,并且可以通过我不想要的其他类覆盖该方法。

最佳答案

如果您使用任何依赖注入(inject)库(如 Spring),您可以将模拟对象而不是构建器注入(inject) ImporterService 类。或者您可以将对构造函数的调用替换为对工厂的调用并使用工厂,这会在测试代码中返回模拟。

关于java - 模拟内部实例化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8517940/

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