java - 如何在 mockito 中模拟 Spring 依赖项

标签 java spring unit-testing mockito

我正在尝试模拟 Spring Beans。我能够模拟对象 B 和 C。但是我无法模拟 B 类中的对象。 插入类 A 的模拟包含 B 。但是 X 和 Y 为空,即使我 mock 了它们。 Mockito 中有什么方法可以模拟 Spring bean 中成员的对象。

@Named
@Scope(value = "prototype")
public class A {        
    @Inject
    private B b;
    @Inject
    private C c;        
}

@Named
@Scope(value = "prototype")
public class B {        
    @Inject
    private X x;
    @Inject
    private Y y;        
}

我需要在其中填充类 A 的所有依赖项的测试类。

@RunWith(MockitoJUnitRunner.class)
public class ATest {     

    @InjectMocks
    A a = new A();    

    @Mock
    private B b;
    @Mock
    private C c;

    @Mock
    private X x;
    @Mock
    private Y y;
}

最佳答案

你可以做下一步。在这种情况下,B 将是 spy 对象,因此您可以根据需要在其上模拟方法结果。或者,您可以将真实的 B 方法与模拟的 X 和 Y 方法结合使用。

    @RunWith(MockitoJUnitRunner.class)
public class ATest {        

    @Mock
    private X x;
    @Mock
    private Y y;


        @Spy
        @InjectMocks
        private B b;

        @Mock
        private C c;

        @InjectMocks
        A a; 

        @Before
        public void setUp() {
           MockitoAnnotations.initMock(this);
        }

    }

关于java - 如何在 mockito 中模拟 Spring 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34497046/

相关文章:

java - 如何使用 Appium Java 将 Android ScrollView 中的 Web 元素名称添加到 ArrayList 中?

c# - 内部异常的单元测试

java - Web服务调用时如何拦截xml响应和请求?

java - 如何在网格系统中导航芭比娃娃?

java - 处理自定义 View 解析器抛出的异常

java - 使用@Cacheable 注释的真实世界 DAO 的最佳实践

java - 使用 Mockito 注入(inject) Autowiring 的 bean 并在模拟上设置一些属性

unit-testing - 如何在java中测试物化 View

java - java中的非防御方法是什么?

java - Spring自定义注解集成测试