• <small id='huiSx'></small><noframes id='huiSx'>

    1. <legend id='huiSx'><style id='huiSx'><dir id='huiSx'><q id='huiSx'></q></dir></style></legend>

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

        如何验证是否使用 Mockito 调用了两种方法之一?

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

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

        • <tfoot id='NSXZe'></tfoot>
            <legend id='NSXZe'><style id='NSXZe'><dir id='NSXZe'><q id='NSXZe'></q></dir></style></legend>

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

                  本文介绍了如何验证是否使用 Mockito 调用了两种方法之一?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  假设我有一个类有两个我不关心的方法被称为...

                  Suppose I have a class with two methods where I don't care which is called...

                  public class Foo {
                      public String getProperty(String key) {
                          return getProperty(key, null);
                      }
                      public String getProperty(String key, String defaultValue) {
                          //...
                      }
                  }
                  

                  以下两个(来自另一个类,仍在我的应用程序中)都应该通过我的测试:

                  Both the below (from another class, still in my application) should pass my test:

                  public void thisShouldPass(String key) {
                      // ...
                      String theValue = foo.getProperty(key, "blah");
                      // ...
                  }
                  
                  public void thisShouldAlsoPass(String key) {
                      // ...
                      String theValue = foo.getProperty(key);
                      if (theValue == null) {
                          theValue = "blah";
                      }
                      // ...
                  }
                  

                  我不在乎调用了哪个,我只想调用两个变体之一.

                  I don't care which was called, I just want one of the two variants to be called.

                  在 Mockito 中,我通常可以这样做:

                  In Mockito, I can generally do things like this:

                  Mockito.verify(foo, atLeastOnce()).getProperty(anyString());
                  

                  或者:

                  Mockito.verify(foo, atLeastOnce()).getProperty(anyString(), anyString());
                  

                  是否有一种本地方式来表示验证其中一个或另一个至少发生了一次"?

                  Is there a native way to say "verify either one or the other occurred at least once"?

                  或者我必须做一些粗暴的事情:

                  Or do I have to do something as crude as:

                  try {
                      Mockito.verify(foo, atLeastOnce()).getProperty(anyString());
                  } catch (AssertionError e) {
                      Mockito.verify(foo, atLeastOnce()).getProperty(anyString(), anyString());
                  }
                  

                  推荐答案

                  您可以将 atLeast(0)ArgumentCaptor 结合使用:

                  You could use atLeast(0) in combination with ArgumentCaptor:

                  ArgumentCaptor<String> propertyKeyCaptor = ArgumentCaptor.forClass(String.class);
                  Mockito.verify(foo, atLeast(0)).getProperty(propertyKeyCaptor.capture(), anyString());
                  
                  ArgumentCaptor<String> propertyKeyCaptor2 = ArgumentCaptor.forClass(String.class);
                  Mockito.verify(foo, atLeast(0)).getProperty(propertyKeyCaptor2.capture());
                  
                  List<String> propertyKeyValues = propertyKeyCaptor.getAllValues();
                  List<String> propertyKeyValues2 = propertyKeyCaptor2.getAllValues();
                  
                  assertTrue(!propertyKeyValues.isEmpty() || !propertyKeyValues2.isEmpty()); //JUnit assert -- modify for whatever testing framework you're using
                  

                  这篇关于如何验证是否使用 Mockito 调用了两种方法之一?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:使用 Mockito,我如何匹配地图的键值对? 下一篇:使用 JUnit @Rule 使用 Mockito 进行参数化测试?

                  相关文章

                  最新文章

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

                    <bdo id='ggMO9'></bdo><ul id='ggMO9'></ul>

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