Есть ли простой способ сопоставить поле с помощью Hamcrest?

Я хочу проверить, соответствует ли конкретное поле объекта указанному мной значению. В данном случае это имя сегмента внутри объекта S3Bucket. Насколько я могу судить, мне нужно написать собственный сопоставитель для этого:

mockery.checking(new Expectations() {{
  one(query.s3).getObject(with(
      new BaseMatcher<S3Bucket>() {
        @Override
        public boolean matches(Object item) {
          if (item instanceof S3Bucket) {
            return ((S3Bucket)item).getName().equals("bucket");
          } else {
            return false;
          }
        }
        @Override
        public void describeTo(Description description) {
          description.appendText("Bucket name isn't \"bucket\"");
        }
      }), with(equal("key")));
    ...
    }});

Было бы неплохо, если бы существовал более простой способ сделать это, например:

mockery.checking(new Expectations() {{
  one(query.s3).getObject(
    with(equal(methodOf(S3Bucket.class).getName(), "bucket")),
    with(equal("key")));
    ...
}});

Может ли кто-нибудь указать мне на что-то подобное? Думаю, в этом случае я уже решил свою проблему, но это не первый раз, когда я желаю более простого способа.

5
задан skaffman 17 February 2011 в 19:24
поделиться