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