Spring Data Rest无法进行集成测试吗?

问题描述 投票:0回答:1

我已经尝试同时使用MockMVC和TestRestTemplate。在这两种情况下,响应都为404,但API端点在集成测试之外工作(当我自己运行spring应用程序时)。

是否有人使用Spring Data Rest对生成的控制器进行了有效的集成测试的示例应用程序正常工作?

我还能够针对自己的控制器(非SDR类型)编写常规的集成测试

测试代码:

@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyTest {

    @Autowired
    private TestRestTemplate testRestTemplate;

    @Test
    public void testApi() {
        String settings = testRestTemplate
                .getForObject("/api/v1/orders", String.class);
        System.out.println(settings);
    }

}

回购:

@RepositoryRestResource(excerptProjection = OrderSummaryProjection.class)
public interface OrderRepository extends JpaRepository<Order, Long> {}

好,我发现了问题,但我不知道答案应该是什么:

我在application.properties中设置了spring.data.rest.basePath。

但是我认为在运行集成测试时不会读取该文件。我该如何解决?

spring-boot unit-testing junit spring-data spring-data-rest
1个回答
0
投票
@RunWith(SpringRunner.class) @SpringBootTest public class DummyIT { @Autowired private SettingsRepository settingsRepository; @Test public void testApi() { List<Settings> settings = settingsRepository.findAll(); assertNotNull(settings); } }

我也测试了端到端测试,它也可以工作,它只返回难看的{“ _embedded”:{“ settings”:[{...}]},...}因此可行,但并非如此漂亮:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class DummyTest {

    @Autowired
    private TestRestTemplate testRestTemplate;

    @Test
    public void testApi() {
        String settings = testRestTemplate
                .getForObject("/api/settings", String.class);
        System.out.println(settings);
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.