我有一个单元测试,我正在模拟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
.