2017-03-28 7 views
0

私は、Instagramから私のシステムにデータをマップするリーダーを持っています。 Junit Testを実行すると、ClassCastExceptionが発生しました。私のテストクラスには、次のコードを持っていますClassCastException:com.fasterxml.jackson.databind.node.MissingNodeをcom.fasterxml.jackson.databind.node.Arノードにキャストすることはできません

public class InstagramToJsonMapperTest extends AbstractMapperTest { 

private InstagramMapper instagramMapper; 
private boolean printResult = true; 

@Before 
    public void setup() { 
     super.setup(); 
     instagramMapper = new InstagramMapper(128); 
    } 

    private void compareJson(String unmapped, String mapped) throws Exception { 
     JsonNode unmappedJson = loadJson(unmapped); 
     JsonNode mappedJson = loadJson(mapped); 
     Message<JsonNode> msg = MessageBuilder.withPayload(unmappedJson).build(); 
     Message<JsonNode> resultMsg = instagramMapper.map(msg); 
     JsonNode result = resultMsg.getPayload(); 
     if(printResult) { 
      System.out.println("processed: " + result); 
      System.out.println("expected: " + mappedJson.toString()); 
     } 
     Assert.assertTrue(JacksonUtils.equals(result, mappedJson)); 
    } 

    @Test 
    public void testPhoto() throws Exception { 
     compareJson("/mapping/test.json", "/mapping/test_mapped.json"); 
    } 

} 

エラーは、私のマッパーで、この行は次のとおりです。

String[] branches = JacksonUtils.toArray((ArrayNode) extractor.extract("contentBranch")); 
     if(branches.length == 1) { 
      abc.put("contentBranch", branches[0]); 
     } else { 
      abc.set("contentBranch", JacksonUtils.arrayToArrayNode(branches)); 
     } 

私の問題があり、私は変更すること何を知りません。テストファイルのマッパーコードまたはコードを変更する必要があります。エラーは次のとおりです。

答えて

1

JsonNode node = extractor.extract("contentBranch")を使用して、実際のノードタイプが返されるかどうかをテストする必要があります。

MissingNodeは、ArrayNodeにキャストできません。

if (node instanceof ArrayNode) {...} 
else {...} 
関連する問題