Hamcrest: сбросить текущий тип и значение - PullRequest
0 голосов
/ 14 октября 2019

Я пишу тест с использованием 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 с помощью отладчика. Это непродуктивно вникать в чьи-то внутренние органы.

1 Ответ

0 голосов
/ 14 октября 2019

Я придумал некрасиво:

.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 ...

...