Сопоставитель Hamcrest для параметров объекта

Я получил метод класса

interface Class1{
    void method1(SomeObject... parameters);
}

У меня есть собственный сопоставитель Hamcrest

public class SomeObjectMatcher extends BaseMatcher<SomeObject>{...}

Как написать ожидание, соответствующее этому объекту, переданному в метод1

SomeObject someObject = new SomeObject(...);
...

mockery.checking(new Expectations(){{
    oneOf(class1).method1(with(new SomeObjectMatcher(someObject1)));
}}

Фактический вызов

class1.method1(someObject);

Переданный объект и ожидаемый совпадают, но SomeObjectMatcher не работает, потому что фактически переданный параметр - это не someObject1, а SomeObject[]{someObject1} (массив только с одним объектом - someObject1)? Есть ли способ добавить новый сопоставитель в цепочку, что-то вроде

oneOf(class1).method1(with(arrayHas(new SomeObjectMatcher(someObject1))));

person fiction    schedule 24.11.2011    source источник


Ответы (1)


Попробуйте заменить arrayHas на hasItemInArray. Чтобы сопоставить несколько элементов в массиве, вы можете использовать arrayContaining и arrayContainingInAnyOrder.

person David Harkness    schedule 26.11.2011