Как написать тестовый метод для метода createNewToken? - PullRequest
0 голосов
/ 25 апреля 2018

Я новичок в этом J-модульном тестировании Mockito и хочу проверить мой createNewToken() -метод, но не могу понять его логику.

Это мой метод:

public String createNewToken(String usertoken) {
    WebToken oldToken = getTokenByUserToken(usertoken);
    if (!Assert.isNull(oldToken)) {
        em.remove(oldToken);
    }
    WebToken webToken = new WebToken();
    webToken.setToken(UUID.randomUUID().toString());
    webToken.setUserToken(usertoken);
    em.persist(webToken);

    return webToken.getToken();
}

И это мой метод испытаний, но я уверен, что он неправильный:

@RunWith(Enclosed.class)
public class WebTokenPSTest extends AbstractPersistenceTest {
    @InjectMocks
    WebTokenPS cut;

    @RunWith(MockitoJUnitRunner.class)
    public static class createNewToken extends WebTokenPSTest {

        @Test
        public void happyPath() {
            String token = cut.createNewToken("token");
            String result = token;
            assertThat(result).isEqualTo(token);
        }
    }
}

1 Ответ

0 голосов
/ 25 апреля 2018

Как я вижу, основные части вашего метода работают с Hibernate EntityManager. Поэтому вам следует проверить эту часть или, если возможно, смоделировать ее.

Также вы можете издеваться над getTokenByUserToken (userToket). Здесь вы можете написать несколько случаев.

Итак, возможные тестовые случаи:

  • getTokenByUserToken (usertoken) возвращает ноль. Таким образом, ваш метод создает новый токен и сохраняет токен в БД. Утверждение em.createQuery("select token t...."). Здесь вы подтверждаете, что новый токен сохраняется в БД
  • getTokenByUserToken (usertoken) возврат не сохраняется в токене БД. Здесь вы можете ожидать исключения, когда EntityManager пытается удалить этот токен. Это хороший способ обнаружить, что некоторые исключения не обрабатываются должным образом в коде
  • getTokenByUserToken (usertoken) возвращает существующий токен (например, вы можете вставить его в БД перед этим тестом). Здесь вы тестируете удаление существующего токена и создание нового токена.
...