gpt4 book ai didi

java - 模拟restTemplate getForObject

转载 作者:行者123 更新时间:2023-11-30 03:13:03 25 4
gpt4 key购买 nike

我的休息服务请求:

Price[] prices = restTemplate.getForObject("https://sbk02.test.sparebank1.no/sbk/rest/poc1/prices", Price[].class);

我试图模拟它,但与模拟的交互为零。我的测试代码是:

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={ "classpath:/spring/engine.xml", "classpath:/spring/beans.xml"})
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class, DirtiesMocksTestContextListener.class})
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD)
public class LabbOgLineProcessTest{
@InjectMocks
private PriceService priceServiceMock;
@Mock
private RestTemplate template;

@Before
public void initMocks() throws Exception {
MockitoAnnotations.initMocks(this);
}

@Test
public void complete_AllTasks_success() throws Exception{
when(template.getForObject(eq(PRICES_NAMESPACE), eq(Price[].class))).thenReturn(prices);
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("process");
verify(template, times(1)).getForObject(PRICES_NAMESPACE, Price[].class);
}

}

最佳答案

您的问题很可能是您的服务没有使用模拟的 RestTemplate 而是自己获取实例。您可以发布代码以进行澄清。

我会采用 spring 方式并使用 MockRestServiceServer 来模拟与 spring RestTemplate 的交互。

确保您的服务不会通过自己创建 RestTemplate 来获取它 - 它应该被注入(inject)。

API 文档包含一个使用示例。

这样您还可以测试 JSON 负载的反序列化。

http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/test/web/client/MockRestServiceServer.html

关于java - 模拟restTemplate getForObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33242261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com