如何为CreateNewtoken方法编写测试方法



我是此Mockito J -Unit测试的新手,我想测试我的createNewToken() -Method,但我无法理解它的逻辑。

这是我的方法:

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

您可以看到,方法的主要部分与Hibernate EntityManager一起使用。因此,您应该测试此部分,或在可能的情况下模拟。

您也可以嘲笑GetTokenByusertoken(UserToket(。在这里,您可以写几种情况。

因此可能的测试用例:

  • getTokenbyusertoken(Usertoken(返回null。因此,您的方法会创建新的令牌并将其持续到DB。断言em.createQuery("select token t....")。在这里,您可以验证新的令牌持续到DB
  • getTokenbyusertoken(Usertoken(返回不在DB令牌中。当EntityManager试图删除此令牌时,您可以期待异常。这是一个很好的方法,在代码中未正确处理一些例外情况
  • getTokenByUserToken(UserToken(返回现有的令牌(例如,您可以在此测试之前将其插入DB(。在这里,您可以测试删除现有令牌并创建新令牌。

相关内容

  • 没有找到相关文章

最新更新