【问题标题】:Mockito: Verify a boolean method (or other types)Mockito:验证布尔方法(或其他类型)
【发布时间】:2015-05-11 09:05:03
【问题描述】:

我知道你只能验证 void 方法。但我实际上问自己为什么。

我最近偶然发现了一个单元测试,我确实需要验证某个调用是否已进行。确切地说,它是“newFolder.mkdirs()”。 在我看来,这种方法的行为几乎是“无效的”。但作为一个“功能”,开发人员为这个函数提供了一个布尔返回类型来查看操作是否成功。

很好,但在我的测试中,我不太在意我的模拟。我只想确保完成这个调用,就像我想确保完成重要的 void 调用一样。

那么现在有可能做到这一点吗?我对此非常困惑,甚至无法想象解决这个小问题的方法:/有人有一个好主意吗?


我完全错了:你可以验证一切。我放错了括号。

我有:

verify(newFolder.mkdirs());

我需要:

verify(newFolder).mkdirs();

愚蠢的我;)

【问题讨论】:

  • 我不确定您遇到了什么问题?你的意思是你想尝试类似的东西:when(mock.hasNextItem()).thenAnswer(new Answer() { Object answer(InvocationOnMock invocation) { called = true; return item; } 这里hasNextItem() 方法返回boolean

标签: java testing mockito void verify


【解决方案1】:

我可能理解错了,但是哪里说只能验证 void 方法呢?

例如...

import org.junit.Test;
import static org.mockito.Mockito.*;

public class VoidTest {

    private interface TestClass {
        boolean doStuff(String arg);
    }

    @Test
    public void doIt() {
        TestClass tc = mock(TestClass.class);

        tc.doStuff("[SOMETHING]");

        verify(tc).doStuff("[SOMETHING]"); // OK
        verify(tc).doStuff("[SOMETHING ELSE ]"); // BOOM!
    }
}

【讨论】:

  • 该死的你是对的,或者我完全错了。我accedently做的是“验证(newFolder.mkdirs());”而不是“验证(新文件夹).mkdirs();” --> 括号放错了 :(
猜你喜欢
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 2012-02-04
  • 1970-01-01
  • 1970-01-01
  • 2017-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多