【问题标题】:Spring Data Rest cannot do Integration test?Spring Data Rest 不能做集成测试?
【发布时间】:2020-04-04 07:01:27
【问题描述】:

我尝试过同时使用 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。

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

【问题讨论】:

  • 您的代码 sn-p 将有助于回答问题
  • @Smile 找到了问题,但没有答案,请参阅编辑

标签: spring-boot unit-testing junit spring-data spring-data-rest


【解决方案1】:

我目前不测试 Spring Data Rest 端点,但如果我要这样做,我会使用经典的集成测试方法测试接口:

@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);
    }

}

【讨论】:

  • 我找到了问题,但没有答案,请参阅编辑
猜你喜欢
  • 2018-11-19
  • 1970-01-01
  • 1970-01-01
  • 2017-04-27
  • 2018-11-14
  • 2014-11-13
  • 1970-01-01
  • 2014-07-05
  • 2017-04-20
相关资源
最近更新 更多