gpt4 book ai didi

java - 使用 Spock 在 Spy 对象中 stub 一个 void 方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:03 25 4
gpt4 key购买 nike

我正在使用 Spock,我要测试的类包含在 Spy 中。我想隔离被测试的方法,所以我试图排除从被测试的方法调用的其他方法。通常我会使用这样的东西:

1 * classToTest.methodName(_) >> stubbed_return_value

我的问题是:methodName 是一个无效的方法。我试过这个:

1 * classToTest.methodName(_)

但实际方法仍然被调用。

我如何使用 Spock 去除 void 方法?

最佳答案

你可以用 null stub ...

给定以下 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 == []
}
}

关于java - 使用 Spock 在 Spy 对象中 stub 一个 void 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42512657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com