Tôi muốn tiêm một đối tượng giả Mockito vào một bean Spring (3+) cho mục đích thử nghiệm đơn vị với JUnit. Phụ thuộc đậu của tôi hiện đang được tiêm bằng cách sử dụng @Autowired
chú thích trên các trường thành viên tư nhân.
Tôi đã xem xét việc sử dụng ReflectionTestUtils.setField
nhưng ví dụ bean mà tôi muốn tiêm thực sự là một proxy và do đó không khai báo các trường thành viên riêng của lớp đích. Tôi không muốn tạo một trình thiết lập công khai thành phần phụ thuộc vì sau đó tôi sẽ sửa đổi giao diện của mình hoàn toàn cho mục đích thử nghiệm.
Tôi đã làm theo một số lời khuyên được đưa ra bởi cộng đồng Spring nhưng bản giả không được tạo và hệ thống tự động không thành công:
<bean id="dao" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="com.package.Dao" />
</bean>
Lỗi tôi hiện đang gặp phải như sau:
...
Caused by: org...NoSuchBeanDefinitionException:
No matching bean of type [com.package.Dao] found for dependency:
expected at least 1 bean which qualifies as autowire candidate for this dependency.
Dependency annotations: {
@org...Autowired(required=true),
@org...Qualifier(value=dao)
}
at org...DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(D...y.java:901)
at org...DefaultListableBeanFactory.doResolveDependency(D...y.java:770)
Nếu tôi đặt constructor-arg
giá trị thành một cái gì đó không hợp lệ, không có lỗi xảy ra khi bắt đầu bối cảnh ứng dụng.