Junit 每次从jMockit期望返回不同的值
我有一个单元测试,在这里我模拟Junit 每次从jMockit期望返回不同的值,junit,mocking,jmockit,Junit,Mocking,Jmockit,我有一个单元测试,在这里我模拟java.net.URIclass。此外,我正在创建一个jMockitNonStrictExpectation,其中我希望调用URI.getPath(),并返回一个特定的字符串 正在测试的代码调用了两次URI.getPath(),每次都需要发送不同的字符串 以下是我正在测试的实际方法: public void validateResource() { // some code URI uri = new URI(link1.getHref());
java.net.URI
class。此外,我正在创建一个jMockitNonStrictExpectation
,其中我希望调用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();
}
现在,当第二次调用URI.getPath()
时,我希望从预期中返回“/resource/2”
。但它总是达到第一个期望值并返回“/resourcegroup/1”
。这是我的问题
我该怎么做?由于许多原因,我不能真正使用
strictExpections
,并且必须坚持使用nonstrictExpections
似乎您只需要列出uri.getPath()
一次,然后使用返回值的varargs版本
…类似这样的内容:
uri.getPath(); returns("/resourceGroup/1", "/resourceGroup/2");
这是根据,无论如何…我自己没有测试过
通过调用returns(v1,v2,…)方法,可以为一个期望记录多个要返回的连续值。或者,也可以通过为结果字段指定包含连续值的列表或数组来实现