当前位置: 首页 > 面试题库 >

使用MockRestServiceServer模拟REST调用

夏祺然
2023-03-14
问题内容

我正在尝试编写一个JUnit测试用例,用于测试助手类中的方法。该方法使用REST调用外部应用程序,而这正是我试图在JUnit测试中模拟的调用。

helper方法使用Spring的RestTemplate进行REST调用。

在测试中,我创建了一个模拟REST服务器和一个模拟REST模板,并按如下所示实例化它们:

@Before
public void setUp() throws Exception {
    mockServer = MockRestServiceServer.createServer(helperClass.getRestTemplate());
}

然后,我给模拟服务器添加种子,以便当助手方法进行REST调用时它应返回适当的响应:

// response is some XML in a String
mockServer
    .expect(MockRestRequestMatchers.requestTo(new URI(myURL)))
    .andExpect(MockRestRequestMatchers.method(HttpMethod.GET))
    .andRespond(MockRestResponseCreators.withStatus(HttpStatus.OK)
        .contentType(MediaType.APPLICATION_XML)
        .body(response));

当我运行测试时,helper方法从其进行的REST调用接收到空响应,并且测试失败。

帮助程序创建的REST URL具有查询参数,如下所示:“ http:// server:port / application /
resource?queryparam1 = value1&queryparam2 =
value2


”。

我尝试将URL(“ http:// server:port / application /
resource ”)与查询参数一起使用 ,也可以
不将查询参数放在“ myURL”变量中(以引发匹配,以便它返回响应),但是可以无法让模拟服务器返回任何内容。

我曾尝试搜索此类代码的示例,但尚未找到任何与我的情况相似的东西。

春季版本4.1.7。

在此先感谢您的协助。


问题答案:

创建实例时,MockRestServiceServer应使用RestTemplate生产代码正在使用的现有实例。因此,请尝试注入RestTemplate测试并在调用时使用它MockRestServiceServer.createServer-不要RestTemplate在测试中创建新的。



 类似资料:
  • 问题内容: 我有MockRestServiceServer来模拟服务中的restTemplete。但是它总是失败。它显示错误为。任何人都可以让我知道我在哪里做错了。 服务本身将如下所示: 问题答案: 首先,您的类会在每个请求上创建一个RestTemplate的新实例。我不能足够强调这种不良做法。创建一个类型为RestTemplate的bean并将其注入到您的bean中(它很可能已经创建- 取决于您

  • 出于学校目的,我正在创建一个使用股票API的应用程序。 我正在尝试为一种获取过去10年所有股票数据的方法编写一个测试。我不想实际获取所有这些数据,而是想抛出一个异常。 我想测试的方法: 股票时间系列(....)调用可以抛出阿尔法仓位异常。 我这样嘲弄了TimeSeries类: 在我的测试类中,我想模拟这个调用,并返回一个异常而不是实际数据。 无论我多么试图嘲笑这段代码,它永远不会抛出异常。它将始终

  • 问题内容: 我正在使用curl(通过PHP)抓取一个网站,我想要的一些信息是产品列表,默认情况下仅显示前几个产品。其余的将在用户单击按钮以获取产品的完整列表时传递给用户,从而触发ajax调用以返回该列表。 简而言之,这是他们使用的JS: 这是我的PHP脚本: 这将在该站点上产生一个错误页面。我认为主要原因可能是: 他们检查这是否是ajax请求(不知道如何解决) 令牌必须在标题中,而不在post变量

  • 我试图在测试中模拟一个调用,但我得到了一个错误,因为它调用了真正的方法,而不是模拟它。 这是我的方法 } 这是我的测试课 测试实际上调用了受保护的方法config Setter,并在设置代理时失败。帮助我理解我在这里做错了什么。

  • 问题内容: 我有UIWebview,它可以对外部服务进行AJAX调用。离线时,我需要捕获这些请求并返回本地json。 我实现了NSURLProtocol并设法捕获AJAX请求,问题是jquery始终返回0错误代码: }); 我总是收到一个请求。状态= 0 为了测试我的协议,我尝试在html中模拟图像,并且效果很好。 从google.fr =>对图像的HTML请求 工作正常 在亚马逊=>上对json

  • 我用的是弹簧靴和摩基托。我自动连接了一个类,即BDSRequest,在Junit测试类中,我使用了@Spy和@InjectMocks注释。但是在Junits中调用rest服务时,我得到的响应(bdsCustomerHoldings)为null,断言失败。如何在没有模拟rest模板(如mockito.when(restTemplate.PostForObject(constants.bds_rest