gpt4 book ai didi

java - 将 @Mock 注入(inject)另一个 @Mock 或重构?

转载 作者:行者123 更新时间:2023-12-01 12:38:50 24 4
gpt4 key购买 nike

@RunWith(MockitoJUnitRunner.class)
public class CSTest {

@Mock
private CachedDb cachedDb;

@InjectMocks
private AS aS;

@InjectMocks
private CS cS;
}


public class CS extends BS {

@Inject
protected AS aS;

public doStuff() {
aS.doSomething();
}

}

public class AS extends BS {
//bunch of code here
}

有没有办法让我将 CS 注入(inject)到测试类中,并使用其中注入(inject)了 CachedDb 模拟的模拟 AS 来实现?代码可以毫不费力地重构:我将 doSomething 放在 AS 中,因为其行为与 AS 的其他功能类似,但如果这是糟糕的设计,我可以将其重构为共享 utils 包或类似的东西。

预先感谢您的帮助。

最佳答案

Foo 的单元测试应该只关心模拟 Foo 的直接依赖项。

您不应该假设 AS 使用 CachedDb 来实现其方法。 CS不在乎。它所做的只是与 AS 交互。 AS 是否使用 CachedDB 并不重要,只要它的方法执行其应该执行的操作即可。

所以,CS的测试应该模拟AS。不是 CachedDB。

关于java - 将 @Mock 注入(inject)另一个 @Mock 或重构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25316108/

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