【问题标题】:Mocking a constructor of @Autowired service(system under test)模拟@Autowired服务的构造函数(被测系统)
【发布时间】:2015-05-27 19:37:16
【问题描述】:

我必须模拟在受控服务的构造函数中创建的 jerseyclient。主题服务是通过 Spring 的 @Autowired 注入的被测系统。

在服务的构造函数中写入了client=client.create() 方法。我们无法更改此代码(尽管这是代码异味)。我想模拟球衣客户端,但它在服务的构造函数中。我无法模拟这个

【问题讨论】:

  • 这还不清楚。发布相关代码可能会有所帮助。

标签: spring mockito powermock powermockito


【解决方案1】:

sooo...长话短说..承认您使用mockito,在您的src中进行测试,您应该有一个用于测试的应用程序上下文..通常我们以编程方式定义一个,因此,沿着这些思路.. 导入用于测试目的的 .xml 文件(在我的情况下,我导入了用于邮件服务器、连接和身份验证的文件)而不是用于“本地”环境的文件。然后定义一个方法来设置你的每一个服务。 您可能还需要为您的模板解析器添加一个模拟,但最终这一切都取决于您的堆栈...... 所以根据你的方法,最后的事情可能会有点不同,但最终你会按照我在下面概述的方式做一些事情:

                                    @Configuration
                @ImportResource(value = { 
                        "classpath:applicationContext-jdbc-test.xml",
                        "classpath:applicationContext-ldap-test.xml",
                    "classpath:applicationContext-mail-test.xml"})
                public class ApplicationTestContext {

                    @Bean
                    public ObjectMapperWrapper objectMapperWrapper() {
                        return Mockito.mock(ObjectMapperWrapper.class);
                    }

                    @Bean
                    public YourService yourService() {
                        return new YourServiceImpl();
                    }
                    }

【讨论】:

    猜你喜欢
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 2020-03-04
    • 2019-11-24
    相关资源
    最近更新 更多