mock,利用spring的BeanPostProcessor接口,junit运行时mock会替换掉既有的对象mFundClient
import org.easymock.EasyMock;
import org.easymock.IMocksControl;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import com.common.facade.constants.SysRetCodeConstants;
import com.common.integration.mbp.MFundClient;
import com.common.integration.mbp.bean.FundAccountInfo;
public class MBPClientMock implements BeanPostProcessor {
@Override
public Object postProcessAfterInitialization(Object bean, String beanName)
throws BeansException {
if ("mFundClient".equals(beanName) || bean instanceof MFundClient)
{
IMocksControl mocksControl = EasyMock.createControl();
MFundClient clientMock=mocksControl.createMock(MFundClient.class);
FundAccountInfo res=new FundAccountInfo();
res.setMemo(SysRetCodeConstants.SUCCESS.getMessage());
res.setRespCode(SysRetCodeConstants.SUCCESS.getCode());
res.setMerchantCustomerId("2000010000000002"); //03类型
clientMock.queryFundAccountDetail(EasyMock.anyObject(String.class),EasyMock.anyObject(String.class));
EasyMock.expectLastCall().andStubReturn(res);
EasyMock.replay(clientMock);
return clientMock;
}else
return bean;
}
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName)
throws BeansException {
return bean;
}
}
pom.xml文件增加下面的包
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<version>3.2</version>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.2.2</version>
</dependency>
</dependencies>
分享到:
相关推荐
描述中的链接指向了一篇关于Mock的博客文章,虽然具体内容未给出,但可以推测文章可能涉及了如何使用Mock进行测试、Mock工具的介绍以及Mock在实际项目中的应用案例。 在IT行业中,Mock工具有很多,比如Java中的...
在软件开发中,尤其是采用面向接口编程时,mock对象扮演着重要的角色,它允许开发者在测试时替换真实依赖,以确保代码独立于外部系统并能正确工作。下面我们将深入探讨funcy-mock的工作原理、应用场景以及如何使用它...
在IT行业中,Mock技术是一种非常重要的测试方法,它允许开发者模拟复杂的系统组件或者外部依赖,以便在不实际运行这些组件的情况下进行单元测试或集成测试。SpringBoot作为一个流行的Java开发框架,提供了构建微服务...
Mocking是一种技术,用于创建模拟对象来代替真实的服务,这样我们可以在不实际调用外部服务的情况下运行测试。 在Autofac中,`ConfigureContainer`方法用于配置容器,设置服务的注册和生命周期。这通常在应用程序...
### Python单元测试和Mock使用总结 #### 一、单元测试的概念及重要性 **单元测试**,也称为**模块测试**,是指对程序中的最小可测试单元进行正确性验证的一种测试方法。这些单元通常指的是单独的功能块,如函数、...
- 实现接口:创建一个或多个类,实现接口中声明的方法。 - 使用接口:在其他类中,通过接口类型引用实现类的实例,而不是直接引用实现类。 学习和理解接口与实现分离的原则对于成为一名专业的软件开发者至关重要,...
通过`patch`装饰器,我们可以临时替换掉某个函数或类,用Mock对象进行替代,这样就可以专注于测试目标函数,而不受外部影响。 压缩包中的"mock-dome"可能是一个包含多个子目录和文件的结构,比如: 1. `src/`: 源...
通过`laravel-redis-mock`,开发者可以更专注于测试业务逻辑,而不必担心外部数据库的干扰。它提高了测试的效率和可靠性,减少了由于Redis操作导致的不可预测性。 在实际项目中,可能还需要考虑如何处理与Redis相关...
而pytest_mock则进一步增强了pytest的测试能力,通过提供模拟对象(mock objects)的支持,使得开发者能够在测试中替换复杂的依赖关系,从而隔离被测试代码,确保测试的精确性。 模拟(mocking)在软件测试中是一个...
- **隔离测试对象**:通过替换实际的对象,避免了对外部系统的依赖。 - **控制行为**:能够定义对象的行为,包括返回值、抛出异常等。 - **验证交互**:验证待测代码与模拟对象之间的交互,如方法调用的次数、顺序等...
1. **自动挂载mock对象**:当使用`pytest-mock`时,无需手动调用`unittest.mock.patch`来替换依赖项,因为插件会自动将mock对象挂载到测试函数的上下文中。 2. **简洁的API**:`mocker` fixture是`pytest-mock`提供...
`mock` 库是 Python 中一个强大的库,主要用于单元测试时替换对象,以便于模拟和控制外部依赖,避免真实环境的影响。`pytest-mock` 的目标是简化 `mock` 在 `pytest` 测试框架中的集成。 在 Python 单元测试中,`...
在`pytest-mock`中,你可以使用`mocker` fixture创建mock对象,如`mocker.patch()`用于替换某个函数或方法,`mocker.Mock()`用于创建一个空白的mock对象。 5. **Fixture**:`pytest`中的fixture是一种资源管理机制...
在测试中,可以用Mock对象替换那些依赖外部资源或复杂逻辑的对象,使得测试更加简单和可控。 2. **MagicMock**:MagicMock是Mock的子类,它自动实现了所有魔术方法(如__add__、__len__等),使得Mock对象能够响应...
在Python开发中,mock对象是一种强大的工具,允许开发者在测试过程中替换真实的对象,以便更好地控制测试环境,隔离被测试代码与外部依赖,并验证方法是否按预期被调用。`quick_mock` 库可能是为了简化这个过程而...
然而,当测试涉及复杂的外部依赖,如数据库连接、网络请求或者系统调用时,直接进行单元测试可能会变得复杂且容易引入副作用。这时,`mock`库就发挥了关键作用。 `mock`库是Python官方标准库的一部分,主要用于模拟...
链接缝是一种动态替换或注入代码的机制,使得测试代码可以在运行时选择使用模拟的系统调用而不是真实的系统调用。在 C++ 中,可以使用如 `LD_PRELOAD` 环境变量来实现这个目标。`LD_PRELOAD` 可以指定一个库,该库会...
在Java测试领域,有时我们需要对不可mock对象,如静态方法或final类,进行模拟以便于测试。PowerMock就是这样一款强大的工具,它扩展了EasyMock的功能,允许开发者在单元测试中模拟静态方法、构造器、final类和方法...
在这个例子中,我们创建了一个Mock对象,用它来替换`add`函数,然后在测试中调用Mock对象,确保它返回预期的结果。 接下来,我们来看Postman中的Mock Server功能。Postman是一款强大的API开发和测试工具,它提供了...