gpt4 book ai didi

java - 如何捕获 JMockit 对已知参数的期望,但如果使用不同参数调用方法则失败

转载 作者:太空宇宙 更新时间:2023-11-04 07:05:00 25 4
gpt4 key购买 nike

在 JMockit 中,如何设置对已知参数(或模拟参数)调用 1 次的方法的期望,但如果它使用不同的参数调用该方法,则将其设置为失败。

即我想设置 times = 1 的期望,其中 Arg = "XYZ",但对于任何其他对 Arg != "XYZ"的方法的调用,设置 times = 0。

这些期望的排序只会导致我的测试失败。我确实找到了一种方法来做到这一点,尽管对我来说这相当麻烦,这是代码:

            obj.getDTOs(anyString);
result = new Delegate() {
List<DTO> getDTOs(String testArg)
{
if (testArg.equals(expectedString)) {
return Collections.<DTO>emptyList();
} else {
throw new IllegalArgumentException();
}
}
};
result = Collections.<DTO>emptyList();
times = 1;

这是最好的方法吗?

最佳答案

以下内容将起作用,尽管也可以使用委托(delegate)来完成:

static class Service {
List<?> getDTOs(String s) { return null; }
}

@Test
public void example(@Mocked final Service obj) {
new NonStrictExpectations() {{
obj.getDTOs("XYZ"); times = 1; // empty list is the default result
obj.getDTOs(withNotEqual("XYZ")); times = 0;
}};

assertEquals(0, obj.getDTOs("XYZ").size());
obj.getDTOs("abc"); // fails with "unexpected invocation"
}

关于java - 如何捕获 JMockit 对已知参数的期望,但如果使用不同参数调用方法则失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21556431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com