加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

junit – 模拟外部不可见的依赖项

发布时间:2020-12-15 02:26:12 所属栏目:Java 来源:网络整理
导读:我必须对一些不支持单元测试(No DI)的旧代码进行单元测试.有没有办法模拟在公共方法中初始化的对象? public int method() { A a = new A(ar1,arg2); //How to mock this?} 谢谢, -Abidi 解决方法 另一个选择是重构代码 public int method() { A a = createA
我必须对一些不支持单元测试(No DI)的旧代码进行单元测试.有没有办法模拟在公共方法中初始化的对象?

public int method() {

    A a = new A(ar1,arg2); //How to mock this?

}

谢谢,

-Abidi

解决方法

另一个选择是重构代码

public int method() {
   A a = createA(arg1,arg2);
}

A createA(int arg1,int arg2) {
    return new A(arg1,arg2);
}

在您的测试方法中,您现在可以使用Mockito的间谍和doAnswer函数来覆盖测试夹具上的createA,其中包含以下内容:

Foo foo = new Foo();
Foo spiedFoo = spy(foo); // a spied version when you can copy the behaviour
doAnswer(new Answer() {
    @Override
    public Object answer(InvocationOnMock inv) throws Throwable {
        A a = mock(A.class);
        return a;
    }
}).when(mySpy).createA(anyInt(),anyInt());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读