使用Mockito验证方法后没有调用任何内容

莫斯·科伦(Moss Collum):

我正在使用Mockito用Java编写单元测试,并且我想验证某种方法是在对象调用最后一个方法

我在被测试的代码中正在做这样的事情:

row.setSomething(value);
row.setSomethingElse(anotherValue);
row.editABunchMoreStuff();
row.saveToDatabase();

在我的模拟中,我不在乎编辑行中所有内容的顺序,但是非常重要的是,保存后不要尝试对其进行任何其他操作。有什么好方法吗?

请注意,我不是在寻找verifyNoMoreInteractions:它不会确认saveToDatabase是最后一次调用,并且如果我在未明确验证的行上调用任何内容,也会失败。我想说些类似的话:

verify(row).setSomething(value);
verify(row).setSomethingElse(anotherValue);
verifyTheLastThingCalledOn(row).saveToDatabase();

如果有帮助,我将从执行此操作的JMock测试切换到Mockito:

row.expects(once()).method("saveToDatabase").id("save");
row.expects(never()).method(ANYTHING).after("save");
Kent Lai :

我认为这需要更多的定制工作。

verify(row, new LastCall()).saveToDatabase();

然后

public class LastCall implements VerificationMode {
    public void verify(VerificationData data) {
        List<Invocation> invocations = data.getAllInvocations();
        InvocationMatcher matcher = data.getWanted();
        Invocation invocation = invocations.get(invocations.size() - 1);
        if (!matcher.matches(invocation)) throw new MockitoException("...");
    }
}

上一个答案:

你是对的。verifyNoMoreInteractions是您所需要的。

verify(row).setSomething(value);
verify(row).setSomethingElse(anotherValue);
verify(row).editABunchMoreStuff();
verify(row).saveToDatabase();
verifyNoMoreInteractions(row);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何验证没有调用任何类的方法?

onDraw 被调用,但没有绘制任何内容

如何使用Mockito验证未使用任何参数组合调用的模拟方法

使用 Mockito 验证静态方法调用

使用没有内容的 URL 调用 QLPreviewControllerDelegate 的方法 didSaveEditedCopyOf

调用方法,但没有任何反应

即使没有调用方法,mockito never()也会被调用吗?

sed - 查找某个符号后是否没有任何内容

如果斜杠后没有任何内容,则htaccess重定向

Admob onAdLoaded 被调用但屏幕上没有显示任何内容

TextFormField 验证对使用的验证器没有任何影响

如何使用 Mockito 使用枚举参数验证方法调用?

验证的多种方法调用使用的的Mockito顺序

Mockito:验证使用功能参数调用方法

Mockito:验证未使用特定参数类型调用方法

如何验证未使用Mockito调用特定方法?

如何使用Power Mockito调用如何验证静态void方法

是否可以使用Mockito验证测试的对象方法调用?

使用Moq中的任何struct参数验证方法调用

尝试使用 getJSON 函数,但它没有返回任何内容

如何使用OCMock验证目标C中没有调用异步方法?

Mockito验证方法在void方法内的调用

反应调用父级方法没有任何反应

我如何制作和调用没有任何参数的方法?

在rake任务中调用类方法,没有任何反应

cin 之前使用 cin 后没有读取任何值

Mockito验证方法调用的顺序/顺序

mockito 不验证我的方法是否被调用

Mockito:验证捕获对象的方法是否被调用