将isEqualToComparingFieldByFieldRecursively转换为我的斯波克测试



我正在将所有Junit测试转换为Spock测试,我不想使用任何";断言方法";。因此,我必须将方法isEqualToComparingFieldByFieldRecursive转换为Groovy类。我不确定我是否正确理解了这个方法的作用。

assertThat(validationMessage).isEqualToComparingFieldByFieldRecursively(provider.createValidationMessageDto());

在这种情况下,validationMessage是一个DTO对象,提供程序.createValidationMessageDto返回相同类型的DTO对象。是否已经存在任何类似的方法,或者我是否必须编写一个新的自己的方法,检查validationMessage?如果是,该方法应该怎么做?

谢谢你的回答。😊

如果验证消息DTO没有提供正确的equals方法,那么坚持使用isEqualToComparingFieldByFieldRecursively可能是最好的解决方案。虽然斯波克有很好的隐含断言,但像反思性的逐场比较这样的东西并没有得到直接支持。

您可以使用Spock对Hamcrest的支持,并使用相同的PropertyValuesAs来编写:

import static org.hamcrest.beans.SamePropertyValuesAs.samePropertyValuesAs
import static spock.util.matcher.HamcrestSupport.that
// ...
expect:
that validationMessage, samePropertyValuesAs(provider.createValidationMessageDto()

然而,这并不能进行递归比较,因此您可以使用https://github.com/shazam/shazamcrest

相关内容

  • 没有找到相关文章

最新更新