java - Mockito如何进行条件验证?

标签 java unit-testing mockito

所以我想验证一下Mockito的方法。

Subject subject = loadSubject(); 
Teacher teacher = loadTeacher();
Mockito.verify( exam ).createExam( subject , teacher );

但是我想验证这个方法是否满足这个条件:

subject.name.equals("Math") && subject.complexity == 10

那么如何添加条件来进行 Mockito 验证呢?

最佳答案

根据Mockito的文档,没有办法指定条件 http://goo.gl/23fYi

从您发布的一小段代码来看,我猜您想要进行条件调用,然后 Mockito 注册文档中所述的所有交互

Once created, mock will remember all interactions. Then you can selectively verify whatever interaction you are interested in.

所以

Exam mockedExam = mock(Exam.class);
mockedExam.createExam(subject, teacher);
verify(mockedExam).createExam(subject, teacher);

例如,您必须在某个地方插入条件 block

@Test
public void testExamCreation() throws Exception {
    if(subject.getName().equalsIgnoreCase("Math") && subject.getComplexity() == 10) {
        mockedExam.createExam(subject, teacher);
    }
    verify(mockedExam).createExam(subject, teacher);
}

希望对您有所帮助。

关于java - Mockito如何进行条件验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25510847/

相关文章:

java - 硬件调整在笔记本电脑上运行良好的应用程序?

unit-testing - PHPUnit:如何模拟具有多个参数且没有直接顺序的多个方法调用?

java - 如何使用泛型参数类型模拟方法

java - 对外观类进行单元测试

methods - 防止equals方法的 stub

java - java中如何将int转换为uint8

java - 如何在 Java9 模块中使用 3rd 方库?

java - 通过转换将 XML 流式传输到 JAXB Unmarshaller,并为根元素声明类类型

c# - 使用 Moq 在函数内模拟与数据源的连接?

unit-testing - 如何在 Xcode 中组织库项目的单元测试?