Hamcrest:转储当前类型和值

问题描述 投票:0回答:1

[我正在使用Java库Hamcrest编写测试,并且它的非流畅API使得当复杂表达式演化时,无法推理表达式类型,例如:

.andExpect(JsonUnitResultMatchers.json()
    .matches(CoreMatchers.anyOf(CoreMatchers.allOf(
         JsonMatchers.jsonPartEquals("id", "123"),
         JsonMatchers.jsonPartEquals("name", "test")))))

是否总是有TRUE匹配器转储当前活动表达式的类型和值?喜欢:

.andExpect(JsonUnitResultMatchers.json()
    .matches(CoreMatchers.anyOf(CoreMatchers.allOf(

         Slf4jMatcher.logType(),
         Slf4jMatcher.logTypeAndToString(),

         ConsumerMatcher.apply(System.out::println),

         JsonMatchers.jsonPartEquals("id", "123"),
         JsonMatchers.jsonPartEquals("name", "test")))))

我不喜欢使用调试器进入Hamcrest代码。深入研究某人的内部是无用的。

junit hamcrest
1个回答
0
投票

我想到了丑陋的人:

.andExpect(JsonUnitResultMatchers.json()
  .matches(Matchers.hasItem(CoreMatchers.allOf(
     new BaseMatcher() {
         @Override
         public boolean matches(Object item) {
             log.info("type: {}", item.getClass());
             log.info("toString: {}", item.toString());
             return true;
         }
         @Override
         public void describeTo(Description description) {}
     },
     JsonMatchers.jsonPartEquals("id", "123"),
     JsonMatchers.jsonPartEquals("name", "test")))))

我希望有一些有趣的DSL ...

© www.soinside.com 2019 - 2024. All rights reserved.