模拟一个Spring bean及其内部依赖项

时间:2019-03-04 14:17:31

标签: java spring mocking mockito spring-test

嗨,我是弹簧测试框架的新手。我有一个像这样的Spring bean-

BEAN A{
    @Autowired
    BEAN B;
    @Autowired
    BEAN C;
}

我想模拟Bean A及其内部依赖项。

当我尝试使用Mockito实例化Bean A的模拟实例时,其失败,并显示“ UnsatisfiedDependencyException”。

所以我必须去查找Bean A中的每个依赖项,并分别模拟它们。

有没有一种方法可以一次模拟spring bean及其所有内部依赖项?

2 个答案:

答案 0 :(得分:0)

使用Bean A对代码进行单元测试所需的全部内容:

@Mock A a;

对Bean A进行单元测试所需的一切:

@Mock B  b;
@Mock C  c;

A a = new A(b, c);

为了通过弹簧测试进行测试,可以例如这样设置测试配置:

@Mock B  b;
@Mock C  c;


@Configuration static public class TestConfig {
    @Bean B b() { return b; } 
    @Bean C c() { return c; } 
    @Bean A a(B b, C c) {
        return new A(b,c);
    } 
}

答案 1 :(得分:0)

如果您使用Mockito,则可以这样做:

@Mock
private BeanB beanB

@Mock
private BeanC beanC;

@InjectMock
private BeanA beanA;

您可以通过两种方法使Mockito与此配合使用:

您可以使用

注释测试类
@RunWith(MockitoJUnitRunner.class)

第二个选项涉及致电

Mockito.initMock(this)

在@Before方法中