在我的@RestController
中,我注入(inject)了@Repositories
的映射,所有这些都从DataBaseRepository
扩展。请参阅构造函数:
@Autowired
public DatasetController(Map<String, DataBaseRepository<?, ?>> reps) {
this.repositories = reps;
}
这在正常应用程序中就像一个魅力,但是一旦我尝试为其创建单元测试(使用 Mockito 的模拟),情况就不是这样了:
@RunWith(MockitoJUnitRunner.class)
public class DatasetControllerTest {
@Mock
private DailyTAVGRepository dailyTAVGRepository; // This extends from DataBaseRepository
@InjectMocks
private DatasetController datasetController;
...
}
在我的测试中,DatasetController
中的 this.repositories
为 null
我做错了什么或者这在单元测试中是不可能的? 提前致谢!
最佳答案
您可以使用@Before
创建 Controller ,然后让mockito 为您注入(inject)模拟。
@Before
public void init() {
Map<String, DataBaseRepository> repos = new HashMap<>(); //you can leave this empty or add in a bunch of mocks of your own
datasetController = spy(new DatasetController(repos));
MockitoAnnotations.initMocks(this);
//add your mocked repos to the repos map as needed after mocks are initialized
}
关于java - Spring boot - 在测试中注入(inject)的存储库映射为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59649962/