问题标签 [spring-restdocs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1685 浏览

spring-restdocs - Spring rest docs 嵌套对象

我们需要以下列形式对呼叫作出响应:

我应该如何记录它?问题是该对象是以 EntryId 作为键的结构,并且在其文档时不包含 id。有没有可以使用变量来定义键的选项?或者推荐在 responseFields 中使用什么?

0 投票
1 回答
1346 浏览

maven - Swagger2Markup:在测试中使用 Swagger 远程端点时如何按标签分组?

我正在使用 Swagger 提供的出色的swagger2markup插件为我的 REST API 生成 Asciidoc 文档。我遵循了 swagger2markup 文档,并且正在使用 Spring MVC 集成测试从我的 Springfox Swagger 端点生成标记,如下所示(我正在使用 Maven):

一切都很好,我的所有路径都在我的最终文档中,但是路径都直接出现在根目录中,并且没有按资源分组(即按控制器),因此Method 1from将出现在与fromController 1相同的级别。Method 2Controller 2

我的输出:

在此处输入图像描述

我想要什么:

在此处输入图像描述

据我所见,当使用从本地文件生成时,如在这个swagger2-markup Maven 项目模板中,您可以指定一个属性来告诉 swagger2markup 使用 config 属性按标签对路径进行分组<swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy>,但是似乎没有这样的配置Swagger2MarkupResultHandler从测试中使用时。唯一的选择是withMarkupLanguage(),但没有withPathsGroupedBy()方法......

我在这里错过了什么吗?

0 投票
1 回答
414 浏览

spring-restdocs - 如何从示例 curl 中完全删除端口号

我正在记录一个 Web API,我需要 curl 和 httpie 示例才能有效调用我们的端点。问题是示例 curl 片段包含一个端口号,我看不到任何摆脱它的方法。我知道如何设置端口号,但我不知道如何完全摆脱它。

我错过了什么吗?这似乎是一个常见的用例。

提前感谢您的帮助!

0 投票
1 回答
2103 浏览

spring - 如何使用 Spring Rest Doc 记录错误消息

我在 spring mvc 测试中使用 Spring rest doc 来生成一个安静的文档。现在我试图描述资源上可能出现的错误消息,但我在 spring 文档中找不到任何可以帮助我的东西。

我想要实现的类似于http://apidocjs.com/example/的 Error 4xx 部分

有什么想法吗 ?

0 投票
0 回答
620 浏览

spring-boot - 如何使用 Spring REST Docs 进行集成测试?

我有一个运行三个 Web 服务器的多模块项目。有一台服务器正在代理其他两台服务器的请求。

我想做集成测试:当整个应用程序运行时,我想运行 HTTP 请求并检查响应是否正确。我想运行与单元测试相同的测试,但使用不同的端口,因为代理也应该被测试。

? 如何告诉 Spring 我想在不启动应用程序的情况下运行测试?他们已经开始了。我只想发送请求并检查响应。


我有生成的单元测试http-request.adochttp-response.adoc在我的 asciidoctor API 文档中使用的片段。

http-request.adoc 的示例:

http-response.adoc 的示例:

我使用脚本参数:-Pintegration=true从单元测试模式切换到集成测试模式:

? 当我进行集成测试时,我不想Host: localhost:8080在请求中包含正在运行的代理应用程序的主机和端口(目前为 localhost:8030)。我如何实现这一目标?


到目前为止我使用的代码
抽象测试类。模块的测试扩展了这个类:

代理模块知道将请求发送到哪里,我们在每个模块的特定测试实现中覆盖 URL。例子:

0 投票
1 回答
1024 浏览

spring-boot - 在 Spring Boot 应用程序中访问 spring-restdocs 生成的内容

我在 Spring Boot (v1.4.1) 应用程序中使用 Spring Restdocs (v1.1.2)。

在 Gradle 构建文件的 jar 任务中,我将生成的输出复制到 public/docs 中:

我在生成的 JAR 中看到了文档

但是,当我运行 JAR 时,我似乎无法在 /docs、/public/docs 等处处理 api-guide.html。

有人可以解释我做错了什么吗?

谢谢!

- 约翰

==================================================== ===========

这是应用程序配置:

和测试配置:

0 投票
1 回答
1956 浏览

java - Spring REST Doc 未命名请求参数

我正在使用Spring REST Docs library编写我的 rest 服务的文档。

我遇到的一个问题是我接受一个带有 JSON 结构的 POST 请求作为没有任何名称的输入。

请求看起来像这样:

我想记录输入结构,但到目前为止还没有办法做到这一点。

该文档描述了这样的内容:

但是我的参数没有名字。

我已经尝试过:

我也尝试使用空名称("")和数组表示法("[]")。到目前为止没有运气。

是否可以记录未命名的参数,还是应该将其包装在另一个结构中?

谢谢,

0 投票
2 回答
881 浏览

spring - 在使用 SpringBootTest 和在 Spring 之前运行的其他测试时,如何确保 Eclipselink 的加载时间编织发生

我正在使用 Spring Rest Docs 为我的 REST 服务生成文档。这涉及运行单元(严格集成)测试,这些测试针对由测试启动的活动 Spring Boot 容器运行。测试类如下所示:

该应用程序使用 JPA 和 EclipseLink 来实现 EntityManager。

当我在我的 IDE 中独立运行测试时,或者作为我使用 maven-surefire-plugin 运行 Maven 构建时唯一存在的测试时,一切正常。

然而,这不是我想在套件中运行的唯一测试。一旦我在套件中运行其他测试,我就会遇到这里提到的问题,即

“Spring 的代理在应用访问 Spring 上下文之前不会初始化持久化上下文。如果应用在访问 Spring 上下文之前已经触发了持久化类的加载,则不会发生编织。”

并得到这样的错误:

异常描述:方法 [_persistence_set_someField_vh] 或 [_persistence_get_someField_vh] 未在对象 [mypackage.MyEntity] 中定义。

那么人们通常会做什么来解决这个问题呢?在不同的模块中运行 SpringBootTest 类来单元测试访问实体?

0 投票
2 回答
212 浏览

spring - Spring REST Docs 询问@RestController?

我正在查看 Spring REST Docs 并想知道它是否能够询问 @RestController 方法以生成描述 Rest API(方法、http 方法、参数、响应类型)的基本文档?我相信 Springfox Spring/Swagger 可以做到这一点,并且比编写测试来获取基本信息/文档更容易。

此外,由于我不想在生产环境中运行集成测试,因此 Spring RestDocs 方法是在测试环境中运行集成测试,然后将生成的文档/片段复制到战争中,以便可以在产品中查看环境?

0 投票
1 回答
963 浏览

java - 是否可以将弹簧休息文档与 spock 一起使用

我在我的 java 应用程序中使用 spock 和 groovy 构建了测试用例。是否可以在不使用 mock mvc 或 reassured 的情况下将 spring rest docs 添加到这个项目

这是我的项目的片段