gpt4 book ai didi

java - 模拟对象返回 null

转载 作者:行者123 更新时间:2023-11-30 05:27:08 25 4
gpt4 key购买 nike

我正在 mock 这样的对象:

    @InjectMocks
private AuroraRepoImpl auroraRepo;

@Mock
private Connector4AuroraDB connector4AuroraDB;

AuroraRepoImpl 是类,connector4AuroraDB 是我需要模拟的对象。但是,当调用转到 connector4AuroraDB 时,它不会返回 null,而是返回 null

这就是它的使用方式:

Connection connection = connector4AuroraDB.openConnection();

它抛出NullPointerException。知道如何 mock 这个吗?

最佳答案

从评论中您得知 Connector4AuroraDB 是由 Spring Autowiring 的(@Autowired)。在我看来,您正在使用字段注入(inject),这使得很难进行 stub 依赖。

我假设你有类似的东西:

public class AuroraRepoImpl {
@Autowired private Connector4AuroraDB connector4AuroraDB;
}

为此,您需要一个 Spring 上下文设置,以便 spring 可以查看 bean 注册表来查找依赖项。

您的示例是使用 MockitoJUnitRunner 运行的简单单元测试。您应该更改您的实现以使用构造函数注入(inject),这样 Mockito 就可以注入(inject)依赖项:

public class AuroraRepoImpl {
private final Connector4AuroraDB connector;

@Autowired
public AuroraRepoImpl(final Connector4AuroraDB connector) {
this.connector = connector;
}
}

如果您使用新的 Spring 版本,如果该类只有一个构造函数,您甚至可以省略 @Autowired 注释。

关于java - 模拟对象返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58320094/

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