gpt4 book ai didi

java - 如何在向下导航对象时递归验证空值?

转载 作者:行者123 更新时间:2023-11-30 06:58:49 25 4
gpt4 key购买 nike

我在 Java 1.7 中使用 Powermock Mockito 1.5.1。

在测试 Web 服务方法时,我需要检查响应对象中的某个值。问题是,这个值有几层深,在获取实际值之前,我需要对它的所有父值进行 null 检查。

目前,这就是我正在做的:

response = service.method1();
assertThat(response, notNullValue());
assertThat(response.getA(), notNullValue());
assertThat(response.getA().getB(), notNullValue());
assertThat(response.getA().getB().getC(), notNullValue());
assertThat(response.getA().getB().getC().getD(), notNullValue());
assertThat(response.getA().getB().getC().getD().size(), is(1));
assertThat(response.getA().getB().getC().getD().get(0), notNullValue());
assertThat(response.getA().getB().getC().getD().get(0).value(), is("ABC"));

有没有办法保存所有 notNullValue() 验证代码,但让它自动发生。所以可以是这样的:

assertThat(response.getA().getB().getC().getD(), *recursivelyNotNull()*);
assertThat(response.getA().getB().getC().getD().size(), is(1));
assertThat(response.getA().getB().getC().getD().get(0).value(), is("ABC"));

最佳答案

让测试抛出一个NullPointerException

如果您想确保在链下有一个值,那么如果抛出 NullPointerException 测试将失败。

就是说,需要链接那么远是一个 Law of Demeter违反,并且可能是一种代码味道。或许您可以进一步拆分单元测试?

关于java - 如何在向下导航对象时递归验证空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32239559/

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