小编典典

401中的Spring Boot集成测试结果

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
    }
}

奇怪的是,使用浏览器访问端点可以正常工作,但是集成测试失败。


阅读 460

收藏
2020-05-30

共1个答案

小编典典

最终,问题在于在单元测试环境中 没有 禁用安全性。该解决方案将以下行添加到application.yml

management.security.enabled: false
management.health.db.enabled: false
security.basic.enabled: false
2020-05-30