2016-04-06 11 views
1

Lassen Sie uns sagen, dass ich ein Verfahren wie dieses:EasyMock - erwarten ANYOBJECT außer etwas

foo (A a, B b) 

ich Erwartung einstellen wollen, so dass anyObject außer einige zu erwarten ist, wie der imaginären Code unten:

expect(mockedObject).foo(anyObject(A.class), anyObject(B.class)).andReturn(something).anyTimes(); 
expect(mockedObject).foo(new A("1"), new B("1")).andReturn(something).times(0); 
expect(mockedObject).foo(new A("2"), new B("2")).andReturn(something).times(0); 
expect(mockedObject).foo(new A("3"), new B("3")).andReturn(something).times(0); 

Allerdings gibt es keine times(0) in EasyMock. Ich kann eine Kette von EasyMock.or() und EasyMock.not() erstellen, aber es wird schmutzig sein, wenn es viele unerwartete Objekte gibt.

Auf Mockito kann ich

verify(mockedObject, never()).foo(new A("1"), new B("1")); 

angeben leicht Was auf EasyMock der einfachste Weg ist, wie oben, das Gleiche zu tun?

Antwort

1

Es ist in der Tat etwas fehlt.

Jetzt ist es einfacher zu capture() alle Ihre Parameter und dann überprüfen, dass keine ungültige Permutation verwendet wurde.

+0

Zu meinem Verständnis mit Capture können wir ungültige einzelne Werte ausschließen, aber wir können Kombinationen nicht ausschließen. Nehmen wir zum Beispiel an, wir erwarten foo (neues A ("1"), neues B ("2")), aber wir erwarten kein foo (neues A ("1"), neues B ("1")). Wir sollten nicht sagen, dass wir kein neues A ("1") erwarten dürfen. – Pooya

+0

Ja. Aber es verwendet 2 Captures, Parameter werden in Reihenfolge in beiden erfasst. – Henri