Как проверить случай, когда смоделированный объект не возвращает ошибку? - PullRequest
0 голосов
/ 30 ноября 2018

В классе ClassToTest.java у меня есть следующий метод:

private Optional<SomeObject> getObjById(String id) {
    Optional<SomeObject> obj = someApi.getById(id);
    if (!obj.isPresent()) {
      throw new IllegalArgumentException("Invalid id: " + id);
    }
    return obj;
  }

Закрытый метод getObjById(String id) вызывается в открытом методе callMyMethod из ClassToTest.

IЯ хочу написать два тестовых сценария - один, когда идентификатор не указан, и я выдаю ошибку.Это было легко, я написал это и сдал мой тест:

@Test(expected = IllegalArgumentException.class)
  public void shouldThrowAnErrorIfIdIsNotPresented(){
      Object1 obj1 = new Object1(");

      testee.callMyMethod(obj1);
  }

Другой случай сложен для меня.Я хочу проверить, что если идентификатор присутствует, он не вернет ошибку.Услуга someApi смоделирована и введена внутрь ClassToTest.Он имеет следующий API:

@Service
public class SomeApi {
  @Autowired
  private ObjectManager objectManager;
  @Autowired
  private OtherApi otherApi;

  public SomeObject get(String id) {
    return objectManager.fetch(id, OtherParam...);
  }

  public Optional<SomeObject> getByName(String name) {
    return objectManager.fetchAll(someParams)
                        .findFirst();
  }

  public Set<Obj> findByOtherParam(OtherParam param) {
          .................
  }

  }
}

В основном только добытчики.Любые идеи приветствуются!

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Похоже, вам просто нужно настроить экземпляр макета SomeApi, чтобы он возвращал что-то более полезное при вызове этого метода.

@Test
public void testSuccessCase() {
    // Can replace 'anyString' with specific String if you know it.
    doReturn(Optional.of(new SomeObject())).when(mockSomeApi).getById(anyString());

    testee.callMyMethod(thingThatWillGiveAboveId);

    // Some verification on what happened as a result...
}
0 голосов
/ 30 ноября 2018

Когда я проводил фиктивное тестирование и хотел проверить, сохранился ли мой объект (который был допустимым объектом) в БД, я использовал: verify (someApi) .method (someObject);Это проверит, был ли метод действительно вызван.Вы можете попробовать так или просто проверить, возвращает ли service.getById значение null

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...