2016-03-21 7 views
1

Ich habe Filter Mock-Objekt und übergeben Sie es zur Testmethode. Es Änderung der Methode Filter Meta-Eigenschaft Wert. Aber in meinem Test bekomme ich alten Wert.Java Mockito Wie setze ich einen neuen Wert für die Eigenschaft

org.junit.ComparisonFailure: erwartet: item [28140f6f5a] aber war: item [3abf441213] bei org.junit.Assert.assertEquals (Assert.java:115) ...

@Test 
public void testMetaValue() throws Exception{ 
    when(f.getMetaData("last")).thenReturn("item3abf441213"); 

    WebUK at = new WebUK(); 
    at.setCollectingService(new TestCollectingServiceImpl()); 

    Set<Ad> ads = at.getNewAds(f); 
    assertEquals(1, ads.size()); 
    assertEquals("item28140f6f5a",f.getMetaData("last")); 
} 

Objekt für den Test:

public Set<Ad> getNewAds(Filter filter) throws Exception { 
     ... 
     filter.setMetaData("last", ul.get(0).attr("id")); 
     ... 
} 
+0

Sie könnten 'thenAnswer' anstelle von' thenReturn' verwenden und einen bestimmten Zustand überprüfen lassen, bevor Sie den entsprechenden Wert eingeben. – khelwood

+1

Ich denke, funktioniert richtig, was Sie verspottet wurde die Methode f.getMetadata ("last"), dann in der assertEquals wird zurückkehren "item3abf441213" und Sie vergleichen mit "item28140f6f5a" so wird immer scheitern, ich habe Ihr Beispiel verstanden falsch? – cralfaro

+0

Mein Ziel ist es zu testen oder nach getNewAds Methodenfilter MetaData ("last") von "item3abf441213" zu "item28140f6f5a" geändert. –

Antwort

1

Sie können prüfen, ob die Set-Methode mit einer Überprüfung aufgerufen wurde:

verify(f).setMetaData("last", "item28140f6f5a"); 
Verwandte Themen