【发布时间】:2019-08-13 12:36:49
【问题描述】:
我有一个要求,我需要模拟一个特定的 Spring bean,但是在 JUnit 执行期间,实际的 bean 也正在被实例化。
例如:
@Configuration
public class Config{
@Bean
public Foo fooBean(){
return new Foo();
}
}
这是我模拟 Foo spring bean 的代码,这样在 JUnit 执行期间,只创建模拟的 Foo bean。
@Configuration
public class MockFooBean{
@Bean
@Primary
public Foo mockedBean(){
Mockito.mock(Foo.class)
}
}
要求是在 JUnit 执行期间,我希望调用 mockedBean()(现在正在发生这种情况),但我不希望 fooBean() 被再次调用,以创建 Foo bean。
最近编辑:
仍然没有运气。我在下面尝试过:
@Configuration
public class MockFooBean{
@Bean
@Primary
public Foo mockedBean(){
Mockito.mock(Foo.class)
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=MockFooBean.class, loader=AnnotationConfigurationContextLoader.class)
public class TestClass{
@Autowired
private ClassUnderTest classUnderTest;
//JUNITS//
}
我非常怀念过去我们可以很好地控制代码的美好时光。有什么帮助吗?
【问题讨论】:
-
您必须显示您用于测试的跑步者。您是否还指向您的测试配置,以便 Spring 可以将其用于测试?也看看
@MockBean。
标签: java spring spring-boot junit mockito