Mockito:如何验证一个方法只被调用一次,使用精确的参数忽略对其他方法的调用?

Mockito: How to verify a method was called only once with exact parameters ignoring calls to other methods?(Mockito:如何验证一个方法只被调用一次,使用精确的参数忽略对其他方法的调用?)
本文介绍了Mockito:如何验证一个方法只被调用一次,使用精确的参数忽略对其他方法的调用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

在 Java 中使用 Mockito 如何验证一个方法只被调用了一次,而忽略了对其他方法的调用?

Using Mockito in Java how to verify a method was called only once with exact parameters ignoring calls to other methods?

示例代码:

public class MockitoTest {

    interface Foo {
        void add(String str);
        void clear();
    }


    @Test
    public void testAddWasCalledOnceWith1IgnoringAllOtherInvocations() throws Exception {
        // given
        Foo foo = Mockito.mock(Foo.class);

        // when
        foo.add("1"); // call to verify
        foo.add("2"); // !!! don't allow any other calls to add()
        foo.clear();  // calls to other methods should be ignored

        // then
        Mockito.verify(foo, Mockito.times(1)).add("1");
        // TODO: don't allow all other invocations with add() 
        //       but ignore all other calls (i.e. the call to clear())
    }

}

TODO: 不允许使用 add() 部分的所有其他调用中应该做什么?

What should be done in the TODO: don't allow all other invocations with add() section?

已经尝试失败:

  1. verifyNoMoreInteractions(foo);

不.它不允许调用其他方法,例如 clear().

Nope. It does not allow calls to other methods like clear().

  1. verify(foo, times(0)).add(any());

不.它没有考虑到我们允许一次调用 add("1").

Nope. It does not take into account that we allow one call to add("1").

推荐答案

Mockito.verify(foo, Mockito.times(1)).add("1");
Mockito.verify(foo, Mockito.times(1)).add(Mockito.anyString());

第一个 verify 检查预期的参数化调用,第二个 verify 检查是否只有一次对 add 的调用.

The first verify checks the expected parametrized call and the second verify checks that there was only one call to add at all.

这篇关于Mockito:如何验证一个方法只被调用一次,使用精确的参数忽略对其他方法的调用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Show progress during FTP file upload in a java applet(在 Java 小程序中显示 FTP 文件上传期间的进度)
How to copy a file on the FTP server to a directory on the same server in Java?(java - 如何将FTP服务器上的文件复制到Java中同一服务器上的目录?)
FTP zip upload is corrupted sometimes(FTP zip 上传有时会损坏)
Enable logging in Apache Commons Net for FTP protocol(在 Apache Commons Net 中为 FTP 协议启用日志记录)
Checking file existence on FTP server(检查 FTP 服务器上的文件是否存在)
FtpClient storeFile always return False(FtpClient storeFile 总是返回 False)