gpt4 book ai didi

java - Mockito,模拟类方法中的构造函数

转载 作者:行者123 更新时间:2023-12-01 09:14:41 27 4
gpt4 key购买 nike

当前正在尝试为一个复杂的系统编写单元测试,该系统在其方法之一中使用构造函数,该构造函数将自身作为参数注入(inject)数据库上下文并从正确的环境中检索正确的对象。

尝试使用 Mockito 来模拟这一点,并使其返回一个测试对象,而不是尝试从数据库中查找它;但我对如何使其与传统技术和 @InjectMocks + @Mock 注释一起工作感到困惑。

代码的实质如下:

public FooService{

public String fooFindObject(FooDefinition fooDef) throws FooDefinitionException{

FooFinder theFooFinders = new FooFinder(this);
Foo fooObj = theFooFinders.findFoo(fooDef);

//Logic to be tested inside here that will throw exception upon bad foo definitions

return fooObj.trackingId();

}

我如何模拟这个 FooFinder 对象并使其返回我自己的测试 foo 对象,以便我可以测试定义 obj。正在使用 Mockito,并且不允许重写此代码以使用 FooFinder 对象的 get/setters 的可能性 - 这不是我的代码,我只是在那里测试它。

最佳答案

有一个扩展 Mockito 的库:PowerMockito。

它允许您比通常的 Mockito 进行更多的黑客攻击。这很不错,但问题是,如果您需要 PowerMockito,您的设计通常会有异味。

我肯定会重构你的设计。但如果您因任何原因无法执行此操作,请查看使用 PowerMockito 进行构造函数模拟:

http://benkiefer.com/blog/2013/04/23/powermockito-constructor-mocking/

关于java - Mockito,模拟类方法中的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40652781/

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