当前位置: 首页 > 知识库问答 >
问题:

如何在SpringBoot测试中以编程方式获取方法URL?

欧阳哲
2023-03-14

我想测试我的控制器

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

    @LocalServerPort
    int port;

    @Autowired
    TestRestTemplate rest;

    String myUrl = ...;

    @Test
    public void testSequence() {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        String requesString = ...
        HttpEntity<String> request = new HttpEntity<>( requesString, headers );
        String response = rest.postForObject(myUrl, request, String.class);

在这里,我需要硬编码myUlr,比如

 String.format("http://localhost:%d/my/endpint/path", port);

其中my/endpint/path取决于我应用于控制器类的注释及其方法。

但是我能用类名和方法名以编程方式派生它吗?

共有1个答案

濮赤岩
2023-03-14

如果我正确理解你的问题,我知道的一种方法如下:

 public static String[] extractWebServiceDetails(HandlerMethod handlerMethod) {
            String methodURI[]= handlerMethod.getMethod().getAnnotation(RequestMapping.class).value(); return methodURI;}

在这里,您可以通过调用handlerMethod在类级别使用它。getClass()。getAnnotation(RequestMapping.class)。value()

唯一的限制是,您需要HandlerMethod的实例来派生这些值。

 类似资料:
  • 问题内容: 我想从受监视的应用程序内部以编程方式获得等效的输出。我看到可以通过HotSpot诊断Bean触发二进制堆转储,但是我看不到如何获取直方图数据。可能吗 ? 问题答案: 这可能是不是最好的例子/代码,但看看这个 (我认为这仅适用于Hotspot JVM)

  • 问题内容: 我已经看到这个问题问过其他平台/语言-有什么想法吗?我想做类似的事情: 我希望能够在调试时切换键盘输入作为脚本的开始,这样我就可以花点时间启动chrome来监听我的节点检查器端口。 ***快速更新-我猜我实际上可以使用“ process.argv”来检测–debug是否传入。这是最佳/正确的方法吗? 问题答案: 在调试模式下运行时,NodeJS创建一个全局对象: 因此,可能的解决方案是

  • 问题内容: 基本上,我想获取python解释器的句柄,以便可以传递脚本文件来执行(从外部应用程序执行)。 问题答案: 这适用于Linux和Windows: Python 3.x Python 2.x

  • 问题内容: 有谁知道如何在JBossAS 5.1下以编程方式获取服务器版本号? JBossAS 4.2具有,和和方法,但是在5.1中似乎不存在。 问题答案: 最后,我选择从JBoss 4.2中反编译该类,以查看其作用,并查看结果是否可以改装到JBoss 5中。最终结果是将资源加载到对象中,然后读出and 属性。从那开始。让我感到困惑的是,为什么他们不能只把课程留在那里,而是在那里。

  • 我想访问资源映射,而不是从我的CCS文件访问 但从我的豆子。只有EL评估可能吗?

  • 问题内容: 如何从包含证书和私钥的PEM文件中以编程方式获取KeyStore?我试图在HTTPS连接中向服务器提供客户端证书。我已经确认,如果我使用openssl和keytool来获取jks文件(该文件是动态加载的),则客户端证书可以使用。我什至可以通过动态读取p12(PKCS12)文件来使其工作。 我正在考虑使用BouncyCastle的PEMReader类,但无法克服一些错误。我正在使用-Dj