gpt4 book ai didi

hamcrest - "but: was"子句的输出可以自定义吗?

转载 作者:行者123 更新时间:2023-12-04 15:22:24 24 4
gpt4 key购买 nike

我正在尝试编写一个自定义匹配器,该匹配器深入对象图以检查重要属性。

assertThat( writeRequest, hasRole("admin") );

当这失败时,我希望看到如下消息:
Expected: "admin"
but: was "read-only"

但是,当断言失败时,它会打印出 toString()writeRequest这意味着我想要的信息将在字符串的深处。更糟糕的是,沿着对象图是一个生成的类,它不 @Override Object.toString()这样您甚至无法找出(没有日志记录或断点)用户的实际角色是什么!

那么,在 Hamcrest 中,有没有办法自定义出现在 but: was 中的输出?条款?

最佳答案

tl;博士:覆盖 org.hamcrest.BaseMatcher.describeMismatch(Object item, Description description)

使用 org.hamcrest.collection.IsIterableWithSize 运行测试时我发现测试失败并显示以下消息:

Expected: an iterable with size <1>
but: iterable size was <0>

其中有一个定制的 but条款!

调查 source code for IterableWithSize 我注意到字符串 "iterable size"正在转入 org.hamcrest.FeatureTypeMatcher 作为参数 featureName .通过 org.hamcrest.TypeSafeDiagnosingMatcher 对此进行了跟踪我在那里发现了 describeMismatch(Object,Description)方法。自 BaseMatcher有该方法的实现,如果您让 IDE 生成缺少方法的 stub ,您将错过它。

关于hamcrest - "but: was"子句的输出可以自定义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25221917/

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