2015-10-08 68 views
0

我有一個集成測試,檢查響應的內容類型如下匹配器斷言上兩個對象

Header header = new BasicHeader("Content-Type", "application/octet-stream; charset=UTF-8"); 

assertThat(response.getEntity().getContentType(), Matchers.is(header)); 

測試失敗斷言響應是相同的像與該奇數消息

預構建頭
Expected: is <Content-Type: application/octet-stream; charset=UTF-8> 
    but: was <Content-Type: application/octet-stream; charset=UTF-8> 

我的預感是因爲我們講的是兩個對象,所以我們講的是兩個不同的實例。爲了這個,我也試着

assertThat(response.getEntity().getContentType(), Matchers.equalTo(header)); 

但結果是一樣的。

任何想法我做錯了什麼?

+1

response.getEntity()。getContentType()的返回類型是否實現'equals'? –

+0

@StefanBirkner該方法返回apache.httpcomponets包的BasicHeader。從我的調查來看,這已經等同實施。有什麼想法嗎 ? –

+0

哪個版本等於重寫? [這一個不。](http://grepcode.com/file/repo1.maven.org/maven2/org.apache.httpcomponents/httpcore/4.4/org/apache/http/message/BasicHeader.java)外觀像你可能需要一個自定義的匹配器 – blgt

回答

1

這意味着這兩個對象的toString給出了相同的結果,但這些對象在方法equals方面不同。也許他們甚至不同類別

1

鑑於equals方法是在你失敗的,另一種是使用反射相等忽略與equals方法

org.mockito.Matchers導致問題的領域。 refEq(object,[要忽略的字段列表])