@MockBean 正确注入但测试时为空值 class
@MockBean injected correctly but with null value on test class
我正在使用 Cucumber 和 Spring Boot
进行测试
@CucumberContextConfiguration
@ActiveProfiles(profiles = { "cucumber" })
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
@ExtendWith(SpringExtension.class)
public class FooTest {
@Autowired
BatchService batchService;
@MockBean
S3ClientService s3ClientService;
@MockBean
HttpClientService httpClientService;
@SpyBean
UndueService undueService;
@Given("^foo cucumber test$")
public void foo_cucumber_test() {
System.out.println("Foo Test");
}
}
当我 run/debug 我的测试在 @Given 方法上有一个断点时
我有这种奇怪的行为,@Mockbean
/@SpyBean
被正确注入,但在测试中 class 它的值是 null
!!我不能 运行 Mockito 函数 verify
或 when
但是当我运行没有黄瓜的测试
@Test
void fooTest() {
System.out.println("Foo Test");
}
效果很好!!这些值不是 null
因此,模拟 bean 已创建但未注入 到测试套件。我猜你应该同时添加 @Autowired
和 @MockBean
注释。
这里有一个类似的问题:
我正在使用 Cucumber 和 Spring Boot
进行测试@CucumberContextConfiguration
@ActiveProfiles(profiles = { "cucumber" })
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
@ExtendWith(SpringExtension.class)
public class FooTest {
@Autowired
BatchService batchService;
@MockBean
S3ClientService s3ClientService;
@MockBean
HttpClientService httpClientService;
@SpyBean
UndueService undueService;
@Given("^foo cucumber test$")
public void foo_cucumber_test() {
System.out.println("Foo Test");
}
}
当我 run/debug 我的测试在 @Given 方法上有一个断点时
我有这种奇怪的行为,@Mockbean
/@SpyBean
被正确注入,但在测试中 class 它的值是 null
!!我不能 运行 Mockito 函数 verify
或 when
但是当我运行没有黄瓜的测试
@Test
void fooTest() {
System.out.println("Foo Test");
}
效果很好!!这些值不是 null
因此,模拟 bean 已创建但未注入 到测试套件。我猜你应该同时添加 @Autowired
和 @MockBean
注释。
这里有一个类似的问题: