java – Mockito – 感觉我没有充分利用它的潜力

前端之家收集整理的这篇文章主要介绍了java – Mockito – 感觉我没有充分利用它的潜力前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Mockito时,我只使用它来模拟依赖关系,即我的工作流看起来大概如下:

我有一个依赖的类:

public class C {
    public C (A a,B b) {
        this.a = a;
        this.b = b;
    }

    public String fooBar() {
        return a.foo() + b.bar();
    }
}

在我的测试类中,我模拟了这些依赖项,并告诉它们在调用某些指定方法时返回哪些值:

public class CSpec {
    private A a = mock(A.class);
    private B b = mock(B.class);

    @Test
    public itShouldReturnFooBar() {
        when(a.foo()).thenReturn("foo");
        when(b.bar()).thenReturn("bar");

        C c = new C(a,b);

        assertThat(c.fooBar().isEqualTo("foobar"));
    }
}

(我希望这个例子不是太简单或太衍生;-)).这很好用,它允许我单独测试类(这里:C).尽管如此,我从不使用Mockito的验证方法或其他任何功能.以这种方式使用Mockito可以/足够吗?

解决方法

验证通常用于检查您的C是否真正调用A.foo()和B.bar()方法.所以你可以添加
verify(a).foo();
verify(b).foo();

在断言之前或之后.我不认为您需要或应该在这里使用它们,但有几种情况您需要:

> a或b执行c的公共API不可见/可访问的内容(例如日志记录)>您关注的是执行顺序>你想确保只调用a.foo和b.bar方法,而不是像a.foo2那样>你可以使用那些模拟作为间谍,然后调用a.foo然后将路由到aReal.foo

原文链接:https://www.f2er.com/java/121436.html

猜你在找的Java相关文章