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?
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
Ja. Aber es verwendet 2 Captures, Parameter werden in Reihenfolge in beiden erfasst. – Henri