gpt4 book ai didi

junit - 每次从jMockit期望返回不同的值

转载 作者:行者123 更新时间:2023-12-03 21:31:17 26 4
gpt4 key购买 nike

我有一个模拟java.net.URI类的单元测试。此外,我正在创建一个jMockit NonStrictExpectation,希望在其中调用URI.getPath()并返回特定的字符串。

被测试的代码调用URI.getPath()两次,每次需要发送一个不同的字符串。

这是我的实际测试方法:

public void validateResource() {
// some code
URI uri = new URI(link1.getHref());
String path1 = uri.getPath();
// some more code
uri = new URI(link2.getHref());
String path2 = uri.getPath();
}


这是单元测试代码:

@Mocked URI uri;

@Test
public void testValidateResource() {
new NonStrictExpectations() {
{
// for the first invocation
uri.getPath(); returns("/resourceGroup/1");

// for the second invocation [was hoping this would work]
uri.getPath(); returns("/resource/2");
}
};
myObject.validateResource();
}


现在,当第二次调用 "/resource/2"时,我希望从我的期望中返回 URI.getPath()。但是,它总是达到第一个期望并返回 "/recourceGroup/1"。这是我的问题。

我该如何实现?由于多种原因,我不能真正使用 StrictExpectations,因此必须坚持使用 NonStrictExpectations

最佳答案

似乎您只需要列出uri.getPath()一次,并使用returns的varargs版本...如下所示:

uri.getPath(); returns("/resourceGroup/1", "/resourceGroup/2");


无论如何,这是根据 documentation进行的……我自己尚未对其进行测试。


通过调用return(v1,v2,...)方法,可以为期望记录多个要返回的连续值。或者,可以通过为结果字段分配包含连续值的列表或数组来实现相同目的。

关于junit - 每次从jMockit期望返回不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13017788/

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