java - 如何使用 HashMap 模拟我的 Mongodb 存储库

标签 java spring mongodb unit-testing black-box-testing

我正在尝试找出一种方法来创建我的 Mongo DB 存储库的模拟实现,该存储库在幕后使用了 HashMap。这样,我就不必模拟每个数据库调用,只需让数据库充当黑匣子并在最后检查结果即可。

最佳答案

我发现这篇文章非常有帮助:http://www.heavyweightsoftware.com/blog/creating-a-mock-class-for-unit-testing-with-a-spring-repository/

简而言之,这是该页面的实现:

public class MockWidgetRepository implements WidgetRepository{
    Map<Long, Widget>                   backingMap = new HashMap<>();

    @Override
    public <S extends Widget> S save(S entity) {
        backingMap.put(entity.getId(), entity);

        return entity;
    }

    @Override
    public <S extends Widget> List<S> save(Iterable<S> entites) {
        return null;
    }

    @Override
    public Widget findOne(Long id) {
        Widget result = backingMap.get(id);
        return result;
    }

    @Override
    public boolean exists(Long aLong) {
        return false;
    }

    @Override
    public List<Widget> findAll() {
        List<Widget> result = new ArrayList<>();

        result.addAll(backingMap.values());

        return result;
    }

    @Override
    public Iterable<Widget> findAll(Iterable<Long> longs) {
        return null;
    }

    @Override
    public long count() {
        return 0;
    }

    @Override
    public void delete(Long aLong) {

    }

    @Override
    public void delete(Widget entity) {

    }

    @Override
    public void delete(Iterable<? extends Widget> entities) {

    }

    @Override
    public void deleteAll() {
        backingMap.clear();
    }

    @Override
    public List<Widget> findAll(Sort sort) {
        return null;
    }

    @Override
    public Page<Widget> findAll(Pageable pageable) {
        return null;
    }

    @Override
    public <S extends Widget> S insert(S entity) {
        return null;
    }

    @Override
    public <S extends Widget> List<S> insert(Iterable<S> entities) {
        return null;
    }

    @Override
    public <S extends Widget> S findOne(Example<S> example) {
        return null;
    }

    @Override
    public <S extends Widget> List<S> findAll(Example<S> example) {
        return null;
    }

    @Override
    public <S extends Widget> List<S> findAll(Example<S> example, Sort sort) {
        return null;
    }

    @Override
    public <S extends Widget> Page<S> findAll(Example<S> example, Pageable pageable) {
        return null;
    }

    @Override
    public <S extends Widget> long count(Example<S> example) {
        return 0;
    }

    @Override
    public <S extends Widget> boolean exists(Example<S> example) {
        return false;
    }
}

关于java - 如何使用 HashMap 模拟我的 Mongodb 存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49616321/

相关文章:

java - thymeleaf :each repair

javascript - MongoDB 查询超过 30 秒的文档

mongodb - 使用 Java (Windows) 连接到在 Docker 中运行的 MongoDB 副本集

php - 使用 Doctrine 将大量数据插入 MongoDB 集合

java - 线程中断并不总是有效

java - 如何组织具有多个屏幕/面板的基于 MVC 的程序的 Controller ?

java - 为 mockito 导入

java - 使用可序列化对象中的 spring bean

java - 使用 maven- assembly-plugin 创建两个可执行的 jar

spring - 在 Spring JPA 中实现查询