【问题标题】:Handle method variable that is created by model class with Junit and Mockito使用 Junit 和 Mockito 处理模型类创建的方法变量
【发布时间】:2022-01-04 10:35:49
【问题描述】:

我想让 Junit 和 Mockito 测试我的代码。我有一个变量,它是由 user.class 模型创建的列表。我知道如何模拟等号右侧的部分,但我不知道如何处理左侧部分。 我的问题是,我应该如何模拟用于创建用户变量列表的 User.class?

这是我应该处理的变量:

List<User> user = daoUser.get(userID);

【问题讨论】:

    标签: java spring-boot junit mockito


    【解决方案1】:

    如果您正在为daoUser.get(userID) 方法编写单元测试,那么您只需要模拟其中包含的任何其他方法。例如,如果daoUser.get(userID)method 中有一个fooClass.doSomethingElse() 方法,那么您将模拟FooClass。否则,只需创建一个单元测试,将实际方法输出与预定义的预期值 List&lt;User&gt; expectedList 进行比较。

    如果您尝试测试另一个方法并想模拟daoUser.get(userID),则模拟DaoUser 类并编写一个Mockito when 语句,例如when(daoUser.get(anyString()).thenReturn(fooList),这样当您正在测试的方法命中daoUser.get(userID)那么它实际上并没有调用它,而是模拟了响应。

    希望这是有道理的。

    【讨论】:

    • 感谢您的回答。简而言之,我想用我的业务逻辑来测试这个类。问题中的变量是其中一种方法。我正在按照您在第二段中的建议进行操作:when(daoUser.get(Integer.parseInt(userInputInfo.get("townId")))).thenReturn(listOfUsers); 其中listOfUsers 是我为测试创建的预定义地图。我担心List&lt;User&gt; user 依赖于 User.class 被装箱。 User.class 是模型。 Мy 的问题是如何处理在测试时使用要定义的另一个类的变量?什么是正确的方法?
    • @Hristo.L 我只想创建 2 个用户,例如 User user1 = new User()User user2 = new User()。然后,如果需要,可以设置一些值并将它们添加到一个新列表中,您将在模拟中返回。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    • 2023-03-04
    相关资源
    最近更新 更多