diff --git a/json-path-assert/src/main/java/com/jayway/jsonassert/impl/JsonAsserterImpl.java b/json-path-assert/src/main/java/com/jayway/jsonassert/impl/JsonAsserterImpl.java index 2faa8aee..fe376e43 100644 --- a/json-path-assert/src/main/java/com/jayway/jsonassert/impl/JsonAsserterImpl.java +++ b/json-path-assert/src/main/java/com/jayway/jsonassert/impl/JsonAsserterImpl.java @@ -13,10 +13,8 @@ import static org.hamcrest.Matchers.*; public class JsonAsserterImpl implements JsonAsserter { - private final Object jsonObject; - /** * Instantiates a new JSONAsserter * @@ -26,13 +24,19 @@ public class JsonAsserterImpl implements JsonAsserter { this.jsonObject = jsonObject; } - /** * {@inheritDoc} */ @SuppressWarnings("unchecked") public JsonAsserter assertThat(String path, Matcher matcher) { - T obj = JsonPath.read(jsonObject, path); + T obj = null; + + try { + obj = JsonPath.read(jsonObject, path); + } catch (Exception e) { + throw new AssertionError(String.format("Error reading JSON path [%s]", path), e); + } + if (!matcher.matches(obj)) { throw new AssertionError(String.format("JSON path [%s] doesn't match.\nExpected:\n%s\nActual:\n%s", path, matcher.toString(), obj)); diff --git a/json-path-assert/src/test/java/com/jayway/jsonassert/JsonAssertTest.java b/json-path-assert/src/test/java/com/jayway/jsonassert/JsonAssertTest.java index d6cd02a3..1489e094 100644 --- a/json-path-assert/src/test/java/com/jayway/jsonassert/JsonAssertTest.java +++ b/json-path-assert/src/test/java/com/jayway/jsonassert/JsonAssertTest.java @@ -5,6 +5,8 @@ import org.junit.Test; import java.io.InputStream; +import com.jayway.jsonpath.PathNotFoundException; + import static com.jayway.jsonassert.JsonAssert.*; import static org.hamcrest.Matchers.*; @@ -44,7 +46,7 @@ public class JsonAssertTest { " }\n" + "}"; - @Test + @Test(expected = AssertionError.class) public void invalid_path() throws Exception { with(JSON).assertThat("$.store.book[*].fooBar", collectionWithSize(equalTo(4))); } @@ -66,7 +68,6 @@ public class JsonAssertTest { } - @Test //@Ignore //TODO: finalize behaviour public void a_document_can_be_expected_not_to_contain_a_path() throws Exception { @@ -148,8 +149,6 @@ public class JsonAssertTest { } */ - - @Test public void path_including_wildcard_path_followed_by_another_path_concatenates_results_to_list() throws Exception { with(getResourceAsStream("lotto.json")).assertThat("lotto.winners[*].winnerId", hasItems(23, 54)); @@ -164,7 +163,20 @@ public class JsonAssertTest { asserter.assertNotDefined("$xxx"); // fail but should be pass } + @Test + public void testAssertEqualsInteger() throws Exception { + with(getResourceAsStream("lotto.json")).assertEquals("lotto.winners[0].winnerId", 23); + } + + @Test(expected = AssertionError.class) + public void testAssertEqualsIntegerInvalidExpected() throws Exception { + with(getResourceAsStream("lotto.json")).assertEquals("lotto.winners[0].winnerId", 24); + } + @Test(expected = AssertionError.class) + public void testAssertEqualsIntegerInvalidField() throws Exception { + with(getResourceAsStream("lotto.json")).assertEquals("lotto.winners[0].winnerId1", 24); + } private InputStream getResourceAsStream(String resourceName) { return getClass().getClassLoader().getResourceAsStream(resourceName); diff --git a/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java b/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java index 8b313eed..1f1a074a 100644 --- a/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java +++ b/json-path/src/main/java/com/jayway/jsonpath/internal/Utils.java @@ -1,7 +1,5 @@ package com.jayway.jsonpath.internal; -import com.jayway.jsonpath.InvalidConversionException; - import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.Closeable;