gpt4 book ai didi

java - jMock - 允许()多次调用并产生不同的结果

转载 作者:行者123 更新时间:2023-12-01 11:50:14 25 4
gpt4 key购买 nike

我想多次调用 allowing() 并提供不同的结果。但我发现第一个 allowing() 规范吸收了所有调用,并且我无法更改返回值。

@Test
public void example() {
timeNow(100);
// do something

timeNow(105);
// do something else
}

private void timeNow(final long timeNow) {
context.checking(new Expectations() {{
allowing(clock).timeNow(); will(returnValue(timeNow));
}});
}

如果我将 allowing(clock) 更改为 oneOf(clock) 它工作正常。但理想情况下,我想使用 allowing() 并且不要过度指定时钟仅被调用一次。有什么办法可以做到吗?

最佳答案

我建议您查看 states - 它们允许您根据测试所处的“状态”来更改要使用的期望。

@Auto private States clockState;
@Test
public void example() {
clockState.startsAs("first");
timeNow(100);
// do something

clockState.become("second");
timeNow(105);
// do something else
}

private void timeNow(final long timeNow) {
context.checking(new Expectations() {{
allowing(clock).timeNow(); will(returnValue(timeNow));
when(clockState.is("first"));

allowing(clock).timeNow(); will(returnValue(timeNow + 100));
when(clockState.is("second"));
}});
}

关于java - jMock - 允许()多次调用并产生不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28853650/

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