【问题标题】:How to mock all the classes that implement the same interface while using autowire for Set in spring?如何在spring中使用autowire for Set时模拟所有实现相同接口的类?
【发布时间】:2016-12-04 11:19:12
【问题描述】:

拥有以下课程:

public class A {
     @Autowired
     private Set<IClient> clients;  
 }

public class B implements IClient { }

public class C implements IClient { }


@RunWith(MockitoJUnitRunner.class)
public class Atest {
    @InjectMocks
    A a;

    @Mock
    IClient clients;
}

我如何为Set 的接口使用模拟,这将包括BC 类?

【问题讨论】:

    标签: java spring mocking mockito junit4


    【解决方案1】:

    使用构造函数注入代替字段注入,然后创建两个模拟,将它们放在一个集合中,并使用该集合调用您的构造函数。例如:

    public class Atest {
        private A a;
    
        @Mock
        private IClient mockAClient;
    
        @Mock
        private IClient mockBClient;
    
        @Before
        public void prepare() {
            a = new A(new HashSet<>(Arrays.asList(mockAClient, mockBClient));
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2021-09-03
      • 1970-01-01
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 2016-03-03
      相关资源
      最近更新 更多