Class JsonUnitResultMatchers


  • public class JsonUnitResultMatchers
    extends Object
    Matchers compatible with Spring MVC test framework.

    Sample usage:

    this.mockMvc.perform(get("/sample").accept(MediaType.APPLICATION_JSON)).andExpect(json().isEqualTo(CORRECT_JSON));

    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      JsonUnitResultMatchers ignoring​(String ignorePlaceholder)
      Sets the placeholder that can be used to ignore values.
      org.springframework.test.web.servlet.ResultMatcher isAbsent()
      Fails if the node exists.
      org.springframework.test.web.servlet.ResultMatcher isArray()
      Fails if the selected JSON is not an Array or is not present.
      org.springframework.test.web.servlet.ResultMatcher isEqualTo​(Object expected)
      Compares JSON for equality.
      org.springframework.test.web.servlet.ResultMatcher isFalse()
      Fails if selected JSON is not false.
      org.springframework.test.web.servlet.ResultMatcher isNotEqualTo​(Object expected)
      Fails if compared documents are equal.
      org.springframework.test.web.servlet.ResultMatcher isNotNull()
      Fails if selected JSON is null.
      org.springframework.test.web.servlet.ResultMatcher isNull()
      Fails if selected JSON is not null.
      org.springframework.test.web.servlet.ResultMatcher isObject()
      Fails if the selected JSON is not an Object or is not present.
      org.springframework.test.web.servlet.ResultMatcher isPresent()
      Fails if the node is missing.
      org.springframework.test.web.servlet.ResultMatcher isString()
      Fails if the selected JSON is not a String or is not present.
      org.springframework.test.web.servlet.ResultMatcher isStringEqualTo​(String expected)
      Fails if the selected JSON is not a String or is not present or the value is not equal to expected value.
      org.springframework.test.web.servlet.ResultMatcher isTrue()
      Fails if selected JSON is not true.
      static JsonUnitResultMatchers json()
      Creates JsonUnitResultMatchers to be used for JSON assertions.
      org.springframework.test.web.servlet.ResultMatcher matches​(org.hamcrest.Matcher<?> matcher)
      Matches the node using Hamcrest matcher.
      JsonUnitResultMatchers node​(String path)
      Creates a matcher object that only compares given node.
      JsonUnitResultMatchers when​(net.javacrumbs.jsonunit.core.Option firstOption, net.javacrumbs.jsonunit.core.Option... otherOptions)
      Sets options changing comparison behavior.
      JsonUnitResultMatchers withDifferenceListener​(net.javacrumbs.jsonunit.core.listener.DifferenceListener differenceListener)  
      JsonUnitResultMatchers withTolerance​(double tolerance)
      Sets the tolerance for floating number comparison.
      JsonUnitResultMatchers withTolerance​(BigDecimal tolerance)
      Sets the tolerance for floating number comparison.
    • Method Detail

      • json

        public static JsonUnitResultMatchers json()
        Creates JsonUnitResultMatchers to be used for JSON assertions.
        Returns:
      • node

        public JsonUnitResultMatchers node​(String path)
        Creates a matcher object that only compares given node. The path is denoted by JSON path, for example.

        this.mockMvc.perform(get("/sample").accept(MediaType.APPLICATION_JSON)).andExpect(json().node("root.test[0]").isEqualTo("1"));

        Parameters:
        path -
        Returns:
        object comparing only node given by path.
      • isEqualTo

        public org.springframework.test.web.servlet.ResultMatcher isEqualTo​(Object expected)
        Compares JSON for equality. The expected object is converted to JSON before comparison. Ignores order of sibling nodes and whitespaces.

        Please note that if you pass a String, it's parsed as JSON which can lead to an unexpected behavior. If you pass in "1" it is parsed as a JSON containing integer 1. If you compare it with a string it fails due to a different type. If you want to pass in real string you have to quote it "\"1\"" or use isStringEqualTo(String).

        If the string parameter is not a valid JSON, it is quoted automatically.

        Parameters:
        expected -
        Returns:
        this object.
        See Also:
        isStringEqualTo(String)
      • isStringEqualTo

        public org.springframework.test.web.servlet.ResultMatcher isStringEqualTo​(String expected)
        Fails if the selected JSON is not a String or is not present or the value is not equal to expected value.
      • isNotEqualTo

        public org.springframework.test.web.servlet.ResultMatcher isNotEqualTo​(Object expected)
        Fails if compared documents are equal. The expected object is converted to JSON before comparison. Ignores order of sibling nodes and whitespaces.
      • isAbsent

        public org.springframework.test.web.servlet.ResultMatcher isAbsent()
        Fails if the node exists.
        Returns:
      • isPresent

        public org.springframework.test.web.servlet.ResultMatcher isPresent()
        Fails if the node is missing.
      • isArray

        public org.springframework.test.web.servlet.ResultMatcher isArray()
        Fails if the selected JSON is not an Array or is not present.
        Returns:
      • isObject

        public org.springframework.test.web.servlet.ResultMatcher isObject()
        Fails if the selected JSON is not an Object or is not present.
      • isString

        public org.springframework.test.web.servlet.ResultMatcher isString()
        Fails if the selected JSON is not a String or is not present.
      • isNull

        public org.springframework.test.web.servlet.ResultMatcher isNull()
        Fails if selected JSON is not null.
      • isNotNull

        public org.springframework.test.web.servlet.ResultMatcher isNotNull()
        Fails if selected JSON is null.
      • isTrue

        public org.springframework.test.web.servlet.ResultMatcher isTrue()
        Fails if selected JSON is not true.
      • isFalse

        public org.springframework.test.web.servlet.ResultMatcher isFalse()
        Fails if selected JSON is not false.
      • ignoring

        public JsonUnitResultMatchers ignoring​(String ignorePlaceholder)
        Sets the placeholder that can be used to ignore values. The default value is ${json-unit.ignore}
      • withTolerance

        public JsonUnitResultMatchers withTolerance​(double tolerance)
        Sets the tolerance for floating number comparison. If set to null, requires exact match of the values. For example, if set to 0.01, ignores all differences lower than 0.01, so 1 and 0.9999 are considered equal.
      • withTolerance

        public JsonUnitResultMatchers withTolerance​(BigDecimal tolerance)
        Sets the tolerance for floating number comparison. If set to null, requires exact match of the values. For example, if set to 0.01, ignores all differences lower than 0.01, so 1 and 0.9999 are considered equal.
      • withDifferenceListener

        public JsonUnitResultMatchers withDifferenceListener​(net.javacrumbs.jsonunit.core.listener.DifferenceListener differenceListener)
      • when

        public JsonUnitResultMatchers when​(net.javacrumbs.jsonunit.core.Option firstOption,
                                           net.javacrumbs.jsonunit.core.Option... otherOptions)
        Sets options changing comparison behavior. For more details see Option
        See Also:
        Option
      • matches

        public org.springframework.test.web.servlet.ResultMatcher matches​(org.hamcrest.Matcher<?> matcher)
        Matches the node using Hamcrest matcher.

        • Numbers are mapped to BigDecimal
        • Arrays are mapped to a Collection
        • Objects are mapped to a map so you can use json(Part)Equals or a Map matcher
        Parameters:
        matcher -
        Returns: