我有一个控制器,其结构如下:
@RequestMapping(value="/validate", method=RequestMethod.POST)
public ResponseEntity<Jwt> IsValid(@RequestBody UserRequest userRequest, @RequestHeader Map<String, String> header) throws Exception {
if(header.contains("key") && header.contains("secret") {
process(header.get("key"), header.get("secret"));
...
...
}
}
我正在使用mockmvc为这个控制器编写一个单元测试:
@RunWith(SpringRunner.class)
@AutoConfigureMockMvc
@SpringBootTest
public class AuthenticatorServiceTest {
@Autowired
private MockMvc mockMvc;
@Test
public void CorrectKeyValidation throws Exception {
String key = "correct-key";
String secret = "correct-secret";
Map<String, String> map = new HashMap<>();
map.put("key", key);
map.put("secret", secret);
MvcResult result = mockMvc.perform(MockMvcRequestBuilders.post("/validate")
.header() // <- doesn't accept Map here.
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andReturn();
...
...
}
}
自从 header
方法 MockMvcRequestBuilders
只接受字符串,我真的不知道如何使用mockmvc来测试我的控制器,其中有 Map<String, String>
作为一个 @RequestHeader
. 任何帮助都将不胜感激!
1条答案
按热度按时间z3yyvxxp1#
还有另一个类似于下面的方法(.headers(*),您可以使用它,只需验证。
希望这是有用的。