1.概述

在这个简短的教程中,我们将关注mock无效方法5。

进一步阅读:

Mockito的Java 8特性

概述Java 8在Mockito框架的支持,包括流和默认接口方法

使用Mockito抛出异常

学习如何在Mockito中配置方法调用以抛出异常。

与关注Mockito框架的其他文章一样(例如5验证,5当/,5的模拟方法),MyList下面显示的类将用作测试用例中的协作器。

我们将为本教程添加一个新方法:

public class MyList extends AbstractList {@Override public void add(int index, String element) {// no-op}}

2.简单模拟和验证

无效方法可以与Mockito一起使用doNothing (),doThrow (),和doAnswer ()方法,使模拟和验证直观:

@Test public void whenAddCalledVerified() {MyList MyList = mock(MyList.class);doNothing()当(myList)阀门(isA (Integer.class), isA (String.class));myList。添加(0," ");(1)验证(myList倍)。添加(0," ");}

然而,doNothing ()Mockito的默认行为是什么无效方法。

这个版本的whenAddCalledVerified ()完成和上面一样的事情:

@Test public void whenAddCalledVerified() {MyList MyList = mock(MyList.class);myList (0, " ");(1)验证(myList倍)。添加(0," ");}

DoThrow ()生成一个例外:

@Test(expected = Exception.class) public void givenNull_AddThrows() {MyList MyList = mock(MyList.class);doThrow()当(myList)阀门(isA (Integer.class) isNull ());myList。添加(0,null);}

我们将讨论doAnswer ()在下面。

3.参数获取

重写默认行为的一个原因是doNothing ()就是捕捉论点。

在上面的例子中,我们使用验证()方法检查传递给的参数add ()

然而,我们可能需要捕获这些参数,并对它们做更多的事情。

在这些情况下,我们使用doNothing ()就像我们上面做的一样,但是ArgumentCaptor:

@Test public void whenAddCalledValueCaptured() {MyList MyList = mock(MyList.class);ArgumentCaptor valueCapture = ArgumentCaptor. forclass (String.class);doNothing()当阀门(myList)(任何(Integer.class) valueCapture.capture ());myList。添加(0,“捕获”);assertequal(“捕获”,valueCapture.getValue ());}

4.接听电话无效

方法可能执行比仅仅增加或设置值更复杂的行为。

对于这些情况,我们可以使用Mockito’s回答添加我们需要的行为:

@Test public void whenaddcallledanswered () {MyList MyList = mock(MyList.class);doAnswer(调用->{对象arg0 =调用. getargument (0);对象arg1 =调用。getargument (1);assertequal(3、arg0);assertequal(“回答我”,__arg1);返回null;})当阀门(myList)(任何(Integer.class), (String.class));myList。添加(3,“回答我”);}

在解释Mockito的Java 8特性,我们用回答定义自定义行为add ()

5.部分嘲笑

部分模拟也是一种选择。5的doCallRealMethod ()可用于无效方法:

@Test public void whenaddcallledrealmethodcalled () {MyList MyList = mock(MyList.class);doCallRealMethod()当阀门(myList)(任何(Integer.class), (String.class));myList。添加(1,“真正的”);(1)验证(myList倍)。添加(1,“真正的”);}

这样,我们就可以同时调用实际的方法并验证它。

6.结论

在这篇简短的文章中,我们介绍了四种不同的方法无效方法。

如往常一样,例子可以在这个GitHub项目

通用的底部

开始使用Spring 5和Spring Boot 2,通过学习的春天课程:

>>看看这个课程
对这篇文章的评论关闭!