Class RestTestClientJsonMatcher
java.lang.Object
net.javacrumbs.jsonunit.spring.RestTestClientJsonMatcher
Matcher compatible with Spring RestTestClient.
Sample usage:
client.get().uri(path).accept(MediaType.APPLICATION_JSON).exchange().expectBody()
.consumeWith(json().isEqualTo(CORRECT_JSON));
-
Method Summary
Modifier and TypeMethodDescriptionSets the placeholder that can be used to ignore values.Uses JsonPath to extract values from the actual value.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isAbsent()Fails if the node exists.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isArray()Fails if the selected JSON is not an Array or is not present.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> Compares JSON for equality.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isFalse()Fails if selected JSON is not false.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isNotEqualTo(@Nullable Object expected) Fails if compared documents are equal.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> Fails if selected JSON is null.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isNull()Fails if selected JSON is not null.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isObject()Fails if the selected JSON is not an Object or is not present.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> Fails if the node is missing.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isString()Fails if the selected JSON is not a String or is not present.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isStringEqualTo(@Nullable String expected) Fails if the selected JSON is not a String or is not present or the value is not equal to expected value.Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isTrue()Fails if selected JSON is not true.static RestTestClientJsonMatcherjson()protected RestTestClientJsonMatchermatchers(net.javacrumbs.jsonunit.core.Configuration configuration) Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> matches(org.hamcrest.Matcher<?> matcher) Matches the node using Hamcrest matcher.Creates a matcher object that only compares given node.when(net.javacrumbs.jsonunit.core.ConfigurationWhen.PathsParam object, net.javacrumbs.jsonunit.core.ConfigurationWhen.ApplicableForPath... actions) Adds path specific options.when(net.javacrumbs.jsonunit.core.Option firstOption, net.javacrumbs.jsonunit.core.Option... otherOptions) Sets options changing comparison behavior.withDifferenceListener(net.javacrumbs.jsonunit.core.listener.DifferenceListener differenceListener) withMatcher(String matcherName, org.hamcrest.Matcher<?> matcher) Adds a matcher to be used in ${json-unit.matches:matcherName} macro.withTolerance(double tolerance) Sets the tolerance for floating number comparison.withTolerance(@Nullable BigDecimal tolerance) Sets the tolerance for floating number comparison.
-
Method Details
-
json
-
matchers
protected RestTestClientJsonMatcher matchers(net.javacrumbs.jsonunit.core.Configuration configuration) -
node
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"));- Returns:
- object comparing only node given by path.
-
inPath
Uses JsonPath to extract values from the actual value. -
ignoring
Sets the placeholder that can be used to ignore values. The default value is ${json-unit.ignore} -
withTolerance
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. -
withMatcher
Adds a matcher to be used in ${json-unit.matches:matcherName} macro. -
withTolerance
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 RestTestClientJsonMatcher withDifferenceListener(net.javacrumbs.jsonunit.core.listener.DifferenceListener differenceListener) -
when
public RestTestClientJsonMatcher when(net.javacrumbs.jsonunit.core.Option firstOption, net.javacrumbs.jsonunit.core.Option... otherOptions) Sets options changing comparison behavior. For more details seeOption- See Also:
-
when
public RestTestClientJsonMatcher when(net.javacrumbs.jsonunit.core.ConfigurationWhen.PathsParam object, net.javacrumbs.jsonunit.core.ConfigurationWhen.ApplicableForPath... actions) Adds path specific options.- See Also:
-
isEqualTo
public Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isEqualTo(@Nullable 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.
- Returns:
thisobject.- See Also:
-
isStringEqualTo
-
isNotEqualTo
-
isAbsent
public Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isAbsent()Fails if the node exists. -
isPresent
public Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isPresent()Fails if the node is missing. -
isArray
Fails if the selected JSON is not an Array or is not present. -
isObject
public Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isObject()Fails if the selected JSON is not an Object or is not present. -
isString
public Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isString()Fails if the selected JSON is not a String or is not present. -
isNull
Fails if selected JSON is not null. -
isNotNull
public Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> isNotNull()Fails if selected JSON is null. -
matches
public Consumer<org.springframework.test.web.servlet.client.EntityExchangeResult<byte[]>> 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
-
isTrue
Fails if selected JSON is not true. -
isFalse
Fails if selected JSON is not false.
-