我的团队目前正在构建SpringBoot API。以下是我的团队如何模拟我们的控制器测试的摘要。当我们将普通类作为依赖项时,此方法有效。
<StyledSwitch theme={lightTheme.secondary} />
我们无法弄清楚如何像下面这样模拟@Resource进行类似的测试。
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestController {
private MockMvc mockMvc;
@Mock
private MyService myService;
@Autowired
@InjectMocks
private MyController myController;
@Before
public void setup() {
//Build the controller mock handler
mockMvc = MockMvcBuilders
.standaloneSetup(myController)
.build();
}
答案 0 :(得分:0)
由于domainCodes
是私有的,因此您的控制器需要有一种为其构造器或设置器设置值的方法。
设置
@Autowired()
@Qualifier("domainNameToCode")
public void setDomainCodes(Map<String, Integer> domainCodes) {
...
}
构造函数
@Autowired()
@Qualifier("domainNameToCode")
public MyController(Map<String, Integer> domainCodes){
}
在测试中,现在您可以注入模拟了。
如果您不想编辑源代码,则可以使用反射在对象上设置私有实例变量
//Using reflection to set a private field on an object
FieldUtils.writeField(controllerInstance, "domainCodes", new HashMap<>()) ;