每次从JMockit期望返回不同的值



我有一个单位测试,我在模拟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();
}

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

我如何实现它?由于多种原因,我无法真正使用StrictExpectations,并且必须坚持使用NonStrictExpectations

似乎您只需要一次列出uri.getPath(),然后使用returns的varargs版本...类似的东西:

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

无论如何,这是根据文档的...我没有自己测试过。

可以通过调用返回(v1,v2,...)方法来记录要返回的多个连续值。另外,可以通过包含连续值的列表或数组分配 result 字段来实现同样的方法。

相关内容

  • 没有找到相关文章

最新更新