0

如何List在单元测试中模拟 Spring 自动装配的 bean。

到目前为止,我无法达到我想要的结果。有没有办法做到这一点?

@Component
public class CrmStatusChecker {

    @Resource
    private List<IsAliveEnabledComponent> components;

    ....
}

测试

@RunWith(MockitoJUnitRunner.class)
public class CrmStatusCheckerTest {

    @Mock
    private List<IsAliveEnabledComponent> isAliveComponents;

    @InjectMocks
    private final CrmStatusChecker crmStatus = new CrmStatusChecker();;

    @Before
    public void setUp() {
        MockitoAnnotations.initMocks(this);
    }

    ...
}
4

1 回答 1

1

查看Springockito。它允许在 spring 上下文中用 mock 替换 bean。

另一个问题是,通过类型擦除,你List<IsAliveEnabledComponent>只是变成了List<Object>. 所以你刚刚嘲笑了List。这可能是 Mockito 忽略它的原因。

如果您正在加载 Spring 上下文,我会使用 Springockito。否则,我将创建一组模拟IsAliveEnabledComponent实例,创建一个列表并在您的设置中手动调用设置器。

于 2012-10-16T14:35:40.027 回答