401中的Spring Boot集成测试结果
我们有一个Spring Boot" title="Spring Boot">Spring Boot 1.4 Web应用程序,它公开了REST api,并且我们想运行一些集成测试。
在我们的测试中,我们让Spring Boot在本地启动Web应用程序,然后对api进行一些调用。
如果我们仅运行Web应用程序本身并点击终点,我们将得到200/OK
预期的响应。运行测试,但是,我们得到401/Unauthorized
服务器响应。
我将在哪里查看导致授权错误的原因?
@RunWith(SpringRunner.class)@SpringBootTest(classes = {Application.class}, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class DemoApplication3IT {
private final Logger log = LoggerFactory.getLogger(DemoApplication3IT.class);
@Autowired
private TestRestTemplate restTemplate;
@Test
public void getFunky() throws IOException {
ResponseEntity<String> response =
this.restTemplate.getForEntity("http://localhost:8080/api/funky", String.class);
log.info("TestRestTemplate response Code: " + response.getStatusCode());
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK); // Expected :200, Actual :401
}
}
奇怪的是,使用浏览器访问端点可以正常工作,但是集成测试失败。
回答:
最终,问题在于在单元测试环境中 没有 禁用安全性。该解决方案将以下行添加到application.yml
:
management.security.enabled: falsemanagement.health.db.enabled: false
security.basic.enabled: false
以上是 401中的Spring Boot集成测试结果 的全部内容, 来源链接: utcz.com/qa/408565.html