【问题标题】:How to Mock local variable using mockito如何使用 mockito 模拟局部变量
【发布时间】:2017-05-02 10:03:26
【问题描述】:

我有类似的课程

public class Myclass{ 

public boolean processePersonData(){
private Person p;
boolean flag=true;
if(flag){
 p= new Person("john",1);
 }
  else{
 p= new Person("adam",2);
}

//do sth with p

}
}

如何模拟变量 p,我搜索了很多但没有得到答案。这可以用mockito来完成吗?我不想对代码进行任何更改。

【问题讨论】:

    标签: java mockito


    【解决方案1】:

    你没有。

    在进行单元测试时,您要验证 公共可观察行为,这意味着:根据输入返回什么结果以及单元如何与其依赖项进行通信。

    变量“p”是您不验证的实现细节。这是因为 in 可能会在不改变单位行为的情况下发生变化,并且您不想在这种情况下更改测试。

    【讨论】:

    • 但是如果变量 P 是像 JdbcTemplate 这样调用数据库的对象怎么办。我看到将其提取到单独的方法然后进行间谍活动是一种选择。但为了做到这一点,我需要将提取出的方法的访问说明符更改为非私有。我不想那样做。
    • @Andy "但是如果变量 P 是一个像 JdbcTemplate 这样调用数据库的对象呢?" --- 然后(恕我直言)您违反了“关注点分离/单一责任模式”。您应该始终将 DTO(我怀疑名为 Person 的类)与执行实际工作(如与数据库交互)的代码分开。
    • 我在想一个场景,我们有一个 DAO 类,它有一个方法,其中我们有 jdbcTemplate 作为局部变量。此 jdbctemplate 运行查询以从数据库中获取结果。如何对这个功能进行单元测试? TIA
    • @Andy 我想说,这是一个不同的问题... ;o)
    • @haha,我被这种情况困住了,想知道该怎么办。
    猜你喜欢
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多