Hamcrest matcher для параметров Object ... - PullRequest
2 голосов
/ 24 ноября 2011

У меня есть метод класса

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))));

1 Ответ

1 голос
/ 26 ноября 2011

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

...