在我的 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)
。这意味着此时该方法尚未被模拟。
我怎样才能实现这个目标?
@PostConstruct
在 @BeforeEach
之前处理过。
我建议在没有 Spring 的情况下创建简单的单元测试。