在我的Spring安全 UserDetailsService
,我注射 Environment
从env变量读取凭据。在集成测试中,我想模拟 Environment
接口以更改测试的环境变量。
这是我的测试:
@ExtendWith(SpringExtension.class)
@SpringBootTest(classes = EportfolioApplication.class)
@AutoConfigureMockMvc
public class IntegrationAuth {
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper objectMapper;
@Test
void loginCorrectCredentials_returnsToken() throws Exception {
User user = new User();
user.setUsername("John Shepard");
user.setPassword("Tali");
MvcResult mvcResult = mockMvc.perform(post("/login")
.contentType("application/json")
.content(objectMapper.writeValueAsString(user)))
.andExpect(status().isOk())
.andReturn();
assertNotNull(
"JWT Token should be present",
mvcResult.getResponse().getHeader("Authorization")
);
}
}
最好的方法是什么?
1条答案
按热度按时间68de4m5k1#
你可以用
@TestPropertySource#properties
. 从它的javadoc:应添加到spring的键值对形式的内联属性
Environment
在ApplicationContext
为测试加载。所有键值对都将作为具有最高优先级的单个测试属性源添加到封闭环境中。下面是一个简单的例子:
测试: