使用MockMvcBuilders时的java Mocking@Resource。对峙
我的团队目前正在构建一个SpringBoot API。下面是我的团队如何模拟控制器测试的一个片段。当我们将普通类作为依赖项时,这是有效的
@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();
}
我们无法弄清楚如何为类似的测试模拟下面这样的@Resource
@Resource(name = "domainNameToCode")
private Map<String, Integer> domainCodes;
# 1 楼答案
由于
domainCodes
是私有的,您的控制器需要有一种方法来为它设置值—构造函数或setter二传手
构造函数
在测试中,现在可以注入模拟
如果不想编辑源,则可以使用反射在对象上设置私有实例变量