微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – 使用Spock在Spy对象中存储一个void方法

我正在使用Spock,我的班级测试被包裹在间谍中.
我想隔离正在测试的方法,所以我试图找出从被测试方法调用的其他方法.
通常我会使用这样的东西:

1 * classtoTest.methodName(_) >> stubbed_return_value

我的问题是这样的:methodName是一个void方法.
我试过这个:

1 * classtoTest.methodName(_)

但实际的方法仍然被调用.

如何使用Spock删除void方法

解决方法:

你可以用null来存根…

给定以下java类

public class Complex {
    private final List<String> sideEffects = new ArrayList<>();

    protected void sideEffect(String name) {
        sideEffects.add("Side effect for " + name);
    }

    public int call(String name) {
        sideEffect(name);
        return name.length();
    }

    public List<String> getSideEffects() {
        return sideEffects;
    }
}

我们想要隐藏sideEffect方法,所以没有做任何事情,所以我们可以使用以下规范:

class ComplexSpec extends Specification {
    def 'we can ignore void methods in Spies'() {
        given:
        Complex complex = Spy()

        when:
        int result = complex.call('tim')

        then:
        result == 3
        1 * complex.sideEffect(_) >> null
        complex.sideEffects == []
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐