【发布时间】:2012-10-22 18:49:53
【问题描述】:
我有一个单元测试,我在其中模拟 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。
【问题讨论】: