在我的@RestController
中,我注入了一个@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;
...
}
在我的测试中,
this.repositories
中的DatasetController
为空我在做什么错或者在单元测试中这是不可能的?
提前致谢!
最佳答案
您可以使用@Before
创建您的控制器,然后让模仿为您注入模拟。
@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
}