mock注解java_Spring 单元测试中如何进行 mock的实现

我们在使用 Spring 开发项目时,都会用到依赖注入。如果程序依赖了外部系统或者不可控组件,比如依赖数据库、网络通信、文件系统等,我们在编写单元测试时,并不需要实际对外部系统进行操作,这时就要将被测试代码与外部系统进行解耦,而这种解耦方法就叫作 “mock”。所谓 “mock” 就是用一个“假”的服务代替真正的服务。

那我们如何来 mock 服务进行单元测试呢?mock 的方式主要有两种:手动 mock 和利用单元测试框架 mock。其中,利用框架 mock 主要是为了简化代码编写。我们这里主要是介绍利用框架 mock,而手动 mock 只是简单介绍。

手动 mock

手动 mock 其实就是重新创建一个类继承被 mock 的服务类,并重写里面的方法。在单元测试中,利用依赖注入的方式使用 mock 的服务类替换原来的服务类。具体代码示列如下:

/**

* UserRepository

*

* @author star

*/

@Repository

public class UserRepository {

/**

* 模拟从数据库中获取用户信息,实际开发中需要连接真实的数据库

*/

public User getUser(String name) {

User user = new User();

user.setName("testing");

user.setEmail("[email protected]");

return user;

}

}

/**

* MockUserRepository

*

* @author star

*/

public class MockUserRepository extends UserRepository {

/**

* 模拟从数据库中获取用户信息

*/

@Override

public User getUser(String name) {

User user = new User();

user.setName("mock-test-name");

user.setEmai

你可能感兴趣的:(mock注解java)