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

使用参数化引用类型参数模拟Spring RestTemplate.Exchange调用

顾烨磊
2023-03-14

我试图模拟对resttemplate.exchange()的调用,但无法使其工作。当前,对exchange()的调用挂起,所以我认为正在调用的是实际的方法,而不是我的模拟方法。对exchange()的调用如下:

ResponseEntity<List<MyType>> response = 
    restTemplate.exchange(queryStr, 
                   HttpMethod.GET, 
                   null,
                   new ParameterizedTypeReference<List<MyType>>() {
                   });
@MockBean
private RestTemplate restTemplate;

@Test
public void testMethod() throws Exception {

    when(restTemplate.exchange(anyString(),
                eq(HttpMethod.GET),
                eq(null),
                eq(new ParameterizedTypeReference<List<MyType>>(){})
    )).thenReturn(new ResponseEntity<List<MyType>>(HttpStatus.OK));

    // rest of test code follows.

}

共有1个答案

左丘凡
2023-03-14

发现我们没有用控件中使用的@Autowired注释RestTemplate的实例。

@RestController
public class myController {

    ...

    @Autowired  // <-- Forgot this annotation.
    private RestTemplate restTemplate;

    ...

}

现在mocks工作正常。

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

  • 考虑下面给出的代码: 我正在尝试编写一个单元测试用例: < li >调用< code >对象b。B()必须被嘲笑 < li >必须模拟对构造函数的调用 这就是我使用Mockito和Powermockito所做的: 第一个模拟成功工作,但第二个模拟使用 失败,并出现以下错误: org.powermock.reflect.exceptions.ConstructorNotFoundException:

  • 我有一个基于代理的模型,它是在Repast中开发的。为了校准模型,我需要运行带有参数列表的模型。并且,使用一些优化算法来寻找最佳参数集(最小化一些损失值)。我想知道如何在就餐辛普森做到这一点。显然,标准的就餐GUI不支持这一点。我试过批量运行,但似乎也不是我想要的。我可以将JAVA代码打包为JAR文件,并从命令行运行它。但是如何让程序在我的Repast/JAVA实现中接受命令行参数呢?

  • 问题内容: 我有一个笼子课: 我试图在另一个类main方法中实例化Cage对象: 我收到错误:笼子是原始类型。泛型Cage的引用应参数化。我尝试了几个想法,但对这种棘手的语法感到困惑:o( 问题答案: 是通用类型,因此您需要指定一个类型参数,例如这样(假设有一个): 您可以使用任何扩展的类型(甚至是自身)。 如果省略type参数,那么在这种情况下最终得到的是。但是,即使这是您想要的,您仍应明确声明

  • 问题内容: 有没有一种使用通用参数模拟类的干净方法?说我必须模拟一个类,我需要将该类传递给需要一个的方法。我可以很容易地做到以下几点: 假定返回通用类型。但是,当我稍后将其传递给期望的方法时,将会有小猫。铸造是这样做的唯一方法吗? 问题答案: 我认为您确实需要强制转换,但应该不会太糟:

  • 我正在创建一个接口和链表的实现,如Java1.8: 接口没有编译器问题,但给出了错误其中我有