繁体   English   中英

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

[英]Return different values each time from jMockit expectation

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM