• <bdo id='iOD2j'></bdo><ul id='iOD2j'></ul>
  • <legend id='iOD2j'><style id='iOD2j'><dir id='iOD2j'><q id='iOD2j'></q></dir></style></legend>

        <i id='iOD2j'><tr id='iOD2j'><dt id='iOD2j'><q id='iOD2j'><span id='iOD2j'><b id='iOD2j'><form id='iOD2j'><ins id='iOD2j'></ins><ul id='iOD2j'></ul><sub id='iOD2j'></sub></form><legend id='iOD2j'></legend><bdo id='iOD2j'><pre id='iOD2j'><center id='iOD2j'></center></pre></bdo></b><th id='iOD2j'></th></span></q></dt></tr></i><div id='iOD2j'><tfoot id='iOD2j'></tfoot><dl id='iOD2j'><fieldset id='iOD2j'></fieldset></dl></div>
        <tfoot id='iOD2j'></tfoot>

        <small id='iOD2j'></small><noframes id='iOD2j'>

        Mockito 模拟所有方法调用并返回

        时间:2023-09-25
          <tbody id='zMPVW'></tbody>

        1. <i id='zMPVW'><tr id='zMPVW'><dt id='zMPVW'><q id='zMPVW'><span id='zMPVW'><b id='zMPVW'><form id='zMPVW'><ins id='zMPVW'></ins><ul id='zMPVW'></ul><sub id='zMPVW'></sub></form><legend id='zMPVW'></legend><bdo id='zMPVW'><pre id='zMPVW'><center id='zMPVW'></center></pre></bdo></b><th id='zMPVW'></th></span></q></dt></tr></i><div id='zMPVW'><tfoot id='zMPVW'></tfoot><dl id='zMPVW'><fieldset id='zMPVW'></fieldset></dl></div>

          <small id='zMPVW'></small><noframes id='zMPVW'>

          <tfoot id='zMPVW'></tfoot>
          <legend id='zMPVW'><style id='zMPVW'><dir id='zMPVW'><q id='zMPVW'></q></dir></style></legend>

                <bdo id='zMPVW'></bdo><ul id='zMPVW'></ul>
                • 本文介绍了Mockito 模拟所有方法调用并返回的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我在使用 mock 编写单元测试时遇到问题.有一个我需要模拟的对象有很多吸气剂,我在代码中调用它们.但是,这些不是我的单元测试的目的.那么,有没有一种方法可以模拟所有方法,而不是一个一个地模拟它们.

                  I have a problem when writing unit testing with mock. There is a object which I need to mock have a lot getter, which I do call them at the code. However, those are not the purpose of my unit test. So, is there is a way I can mock all the methods instead of mock them one by one.

                  下面是代码示例:

                  public class ObjectNeedToMock{
                  
                  private String field1;
                  ...
                  private String field20;
                  
                  private int theImportantInt;
                  
                  
                  public String getField1(){return this.field1;}
                  ...
                  
                  public String getField20(){return this.field20;}
                  
                  public int getTheImportantInt(){return this.theImportantInt;}
                  
                  }
                  

                  这是我需要测试的服务类

                  and this is the service class I need to test

                  public class Service{
                  
                  public void methodNeedToTest(ObjectNeedToMock objectNeedToMock){
                      String stringThatIdontCare1 = objectNeedToMock.getField1();
                      ...
                      String stringThatIdontCare20 = objectNeedToMock.getField20();
                      // do something with the field1 to field20
                  
                      int veryImportantInt = objectNeedToMock.getTheImportantInt();
                      // do something with the veryImportantInt
                  
                      }
                  }
                  

                  在测试类中,测试方法是这样的

                  within the test class, the test method is like

                  @Test
                  public void testMethodNeedToTest() throws Exception {
                        ObjectNeedToMock o = mock(ObjectNeedToMock.class);
                        when(o.getField1()).thenReturn(anyString());
                        ....
                        when(o.getField20()).thenReturn(anyString());
                  
                        when(o.getTheImportantInt()).thenReturn("1"); //This "1" is the only thing I care
                  
                  }
                  

                  那么,有没有一种方法可以避免将无用的field1"的所有when"写入field20"

                  So, is there a way that I can avoid writing all the "when" for the useless "field1" to "field20"

                  推荐答案

                  您可以控制模拟的默认答案.创建模拟时,请使用:

                  You can control the default answers of your mock. When you're creating the mock, use:

                  Mockito.mock(ObjectNeedToMock.class, new Answer() {
                      @Override
                      public Object answer(InvocationOnMock invocation) throws Throwable {
                          /* 
                             Put your default answer logic here.
                             It should be based on type of arguments you consume and the type of arguments you return.
                             i.e.
                          */
                          if (String.class.equals(invocation.getMethod().getReturnType())) {
                              return "This is my default answer for all methods that returns string";
                          } else {
                              return RETURNS_DEFAULTS.answer(invocation);
                          }
                      }
                  }));
                  

                  这篇关于Mockito 模拟所有方法调用并返回的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:尝试存根包保护方法时,Mockito 模拟调用真实方法 下一篇:Mockito 绕过静态方法进行测试

                  相关文章

                  最新文章

                    <small id='7x1PU'></small><noframes id='7x1PU'>

                    <tfoot id='7x1PU'></tfoot>

                      • <bdo id='7x1PU'></bdo><ul id='7x1PU'></ul>
                      <legend id='7x1PU'><style id='7x1PU'><dir id='7x1PU'><q id='7x1PU'></q></dir></style></legend>
                    1. <i id='7x1PU'><tr id='7x1PU'><dt id='7x1PU'><q id='7x1PU'><span id='7x1PU'><b id='7x1PU'><form id='7x1PU'><ins id='7x1PU'></ins><ul id='7x1PU'></ul><sub id='7x1PU'></sub></form><legend id='7x1PU'></legend><bdo id='7x1PU'><pre id='7x1PU'><center id='7x1PU'></center></pre></bdo></b><th id='7x1PU'></th></span></q></dt></tr></i><div id='7x1PU'><tfoot id='7x1PU'></tfoot><dl id='7x1PU'><fieldset id='7x1PU'></fieldset></dl></div>