0

テストでアサートするために Hamcrest を使用しています。以下のスニペットは他の文字列比較で機能しますが、以下の添付画像に示すように、オブジェクト値配列の 0 番目の場所にランダムな文字 (?) があるため、以下のステートメントは失敗します。

assertThat("failure, Publication did not match", book.getPublication(), is("Bloomsbury Publishing"));

結果は次のとおりです。

java.lang.AssertionError: failure, Publication did not match
Expected: is "Bloomsbury Publishing"
     but: was "‎Bloomsbury Publishing"
Expected :Bloomsbury Publishing
Actual   :‎Bloomsbury Publishing

返されるオブジェクトの値配列

それが役立つ場合、 Book は Product エンティティから拡張された JPA エンティティであり、 Product には注釈 @Inheritance( strategy = InheritanceType.JOINED ) があります。

製品クラス

private long id;
private String prodName;
private BigDecimal price; 

ブッククラス

private String genre;
private String author;
private String publication;

data.sql のテスト データには次のものがあります。

INSERT INTO PRODUCT(ID, PROD_NAME, PRICE) VALUES (1, 'Harry Potter', 200.55);
INSERT INTO PRODUCT(ID, PROD_NAME, PRICE) VALUES (2, 'Chhawa', 450.45);
INSERT INTO PRODUCT(ID, PROD_NAME, PRICE) VALUES (3, 'Chatrapati Shivaji Maharaj', 1000.00);
INSERT INTO PRODUCT(ID, PROD_NAME, PRICE) VALUES (4, 'Asa Mi Asami', 99.99);
INSERT INTO BOOK(ID, GENRE, AUTHOR, PUBLICATION) VALUES (1, 'Contemporary Fantasy', 'J. K. Rollings', '‎Bloomsbury Publishing');
INSERT INTO BOOK(ID, GENRE, AUTHOR, PUBLICATION) VALUES (2, 'Action', 'Shivaji Savant', 'Mehta Publishing House');
INSERT INTO BOOK(ID, GENRE, AUTHOR, PUBLICATION) VALUES (3, 'Action', 'Krishanrao Arjun Kelusakar', 'Saraswati Publishing Co.Pvt.Ltd');
INSERT INTO BOOK(ID, GENRE, AUTHOR, PUBLICATION) VALUES (4, 'Comedy', 'Pu La Deshpande', 'SANSKRUTI BOOK HOUSE');

そして、次のように返されたjsonのマーシュリングを解除してい @GetMapping(path = "/products/{id}")ます:

ResponseEntity<Book> response = restTemplate.exchange(
        productBaseUrl,
        HttpMethod.GET,
        null,
        Book.class);

Book book = response.getBody();

不思議なことに、'\u200E' 8206ID=1 でのみこの Unicode 文字を取得します

コードベース全体へのリンクは次のとおりです: https://bitbucket.org/tyro_02/demo.cart/

4

1 に答える 1