使用 Mockito 模拟界面

编程入门 行业动态 更新时间:2024-10-27 02:19:08
本文介绍了使用 Mockito 模拟界面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

有人可以帮我处理下面的 Mock 对象吗?我想为 ServiceImpl 类编写一个模拟测试用例.我想模拟 OrderIF 接口:

Can someone please help me with the below Mock object. I want to write a mock test case for ServiceImpl class. I want to mock OrderIF interface:

public interface OrderIF{ List<Order> ordersFor(String type); }

服务的实现是:

public class ServiceImpl implements Service { private List <Order> orders ; private OrderIF orderif ; // this is 3rd party interface public int getval(String type) { //some code // this returns a list of objects (orders) orders = orderif.ordersFor(type); // some code return orders.get(0) } }

我的代码给出 NullPoinerException:

My code give NullPoinerException:

public class ServiceImplTest { private List <Order> ll ; private service reqService ; @InjectMocks private orderIF order; @Before public void setUp() throws Exception { ll = new ArrayList<Order> (); ll.add(new Order("Buy" , 11 , "USD" )); ll.add(new Order("Sell" , 22 , "USD" )); reqService = spy(new ServiceImpl()); } @Test public void test() { String type= "USD" ; when(order.ordersFor(type)).thenReturn(ll); q = reqService.getval(type); assertTrue(q.get().ask == 232.75); } }

推荐答案

@InjectMocks 不会实例化或模拟您的类.该注解用于将模拟注入该字段.

@InjectMocks will not instantiate or mock your class. This annotation is used for injecting mocks into this field.

如果你想测试serviceImpl,你需要以这种方式模拟:

If you want to test serviceImpl you will need to mock in this way:

@Mock private OrderIF order; @InjectMocks private Service reqService = new ServiceImpl();

要使其工作,您需要在 @Before 方法中使用 runner 或 MockitoAnnotations.initMocks(this);.

To make it work you either need to use runner or MockitoAnnotations.initMocks(this); in @Before method.

更多推荐

使用 Mockito 模拟界面

本文发布于:2023-10-31 07:10:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1545389.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:界面   Mockito

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!