java - 如果不是直接依赖项,我可以模拟对被测系统的依赖项吗?

标签 java junit mockito spring-test

我的问题涉及 Mockito、JUnit 和 Spring Test。

假设我在应用程序中有以下依赖关系图:

SystemUnderTest --> Service1 --> Service2 --> ServiceN

我可以模拟 ServiceN 即使它不是被测系统 (SystemUnderTest) 的直接依赖项,而是传递依赖项 (只有 Service1 是上面的直接依赖项)?

所有这些,假设 Service1Service2 本身没有被模拟(spy() 除外)。

最佳答案

是的,可以使用 MockBean注释。

Example source:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MockBeanIntegrationTest {
    @MockBean
    private SomeService someService;
    @Before
    public void setupMock() {
        when(someService.getResult())
            .thenReturn("success");
    }
}

关于java - 如果不是直接依赖项,我可以模拟对被测系统的依赖项吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42626130/

相关文章:

java - AP C.S. 作业中的 Java 断言

scala - 模拟 BlazeClientBuilder[IO] 以返回模拟客户端 [IO]

java - 如何在 Mockito 上验证满足多个条件中的一个?是否可以验证是否调用了一种或另一种方法?

java - 无法生成针对 iOS 分类的所有 header 和实现

java - 默认情况下允许 Google App Engine 应用访问 Google 云端硬盘

Java TCP 客户端发送被阻止?

java - 从 Intellij 编译项目时在 Maven 项目上获取 "no groovy library is defined for module"

java - 如何模拟一个预期返回 HashMap 的方法?

java - H2 嵌入式数据库在 spring boot 测试期间未获取属性

android - 如何模拟应用程序类来单元测试 ViewModel