无法在配置类内部调用时模拟方法行为

问题描述 投票:0回答:1

在我的 Spring Boot 项目中,我有一个像这样的配置类:

@Configuration
@RequiredArgsConstructor // ... using Lombok
public class MyConfigClass {
    private final MyService myService;
    
    
    @PostContruct
    void setup(){
        String s = myService.aMethod();
        System.out.println(s.substring(0, 2));
    }
}

现在我需要测试项目的一些功能,对于这些测试,我需要模拟

MyService
类:

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
class SomeOtherServiceTest {
    @MockBean
    private MyService mockMyService;

    @BeforeEach
    void setup() {
        when(mockMyService.aMethod()).thenReturn("blablabla"); // ... using Mockito
    }

    @Test
    void test() {
        // test code
    }
}

当我运行

test
时,我在配置类中的
NullPointerException
调用上收到
s.substring(0, 2)
。这意味着此时该方法尚未被模拟。

我怎样才能实现这个目标?

java spring-boot testing mocking mockito
1个回答
0
投票

@PostConstruct
@BeforeEach
之前处理过。

我建议在没有 Spring 的情况下创建简单的单元测试。

© www.soinside.com 2019 - 2024. All rights reserved.