如何使用 Mockito 模拟 Java 中的链式依赖项



我有A类,它依赖于B类。B类再次依赖于C类,结构如下所示:

Class A(){
    @Autowired
    private B b;
    public void someMethod(){
        b.callAnotherMethodAndGetValue();
    }
}
Class B(){
    @Autowired
    private C c;
    public void callAnotherMethodAndGetValue(){
        c.callAnother();
    }
}
Class ATest(){
    @Spy
    private B b;
    public void someMethod(){
        // it goes into this method, and throws null pointer exception at
        // c.callAnother(); as c is null.
        b.callAnotherMethodAndGetValue();
    }
}

有什么方法可以让堆栈从测试用例流向c.callAnother。没有做的时候在b.callAnotherMethodAndGetValue();

你需要嘲笑 C: 而不是监视 b:

@Mock
C c;
@InjectMocks
B b;
@Test
public void someMethod(){
  b.callAnotherMethodAndGetValue();
}

因为如果你使用构造函数注入,你会让你的生活更轻松!


我正在为 A 类编写测试用例。 对于 A 类的内部测试,我应该做 A @InjectMocks A 并且应该做a.someMethod() – 乔蒂·亚达夫

然后测试应如下所示:

@Mock
B b;
@InjectMocks
A a;
@Test
public void someMethod(){
  a.someMethod();
}

相关内容

  • 没有找到相关文章

最新更新