首页 > 解决方案 > 为什么测试函数不能访问内存数据库?

问题描述

我正在为 MongoRepository 自定义函数类编写测试。

以下是我需要测试的存储库功能:

public interface DataRepository extends MongoRepository<Data, String> {

    List<Data> getBySizeId(String sizeId);
    List<Data> findAllBy();
    List<Data> findAllBySizeId(List<String> sizeId);
}

这是测试类:

@DataMongoTest
class DataRepositoryTest {

    @Autowired
    private DataRepository underTest;

    @Test
    void create() {
        //Given
        String id = UUID.randomUUID().toString();
        Data Data = new Data();
        Data.setId(id);
        //When
        underTest.save(Data);
        //Then
        Optional<Data> optionalData = underTest.findById(id);
        assertThat(optionalData)
                .isPresent();
    }

    @Test
    void delete() {
        //Given
        //When
        //Then
    }

    @Test
    void getBySizeId() {
        //Given
        String SizeId = UUID.randomUUID().toString();

        Data Data1 = new Data();
        Data1.setSizeId(SizeId);

        Data Data2 = new Data();
        Data2.setSizeId(SizeId);

        Data Data3 = new Data();
        Data3.setSizeId(SizeId);

        List<Data> DataList = Arrays.asList(Data1, Data2, Data3);

        //When
        underTest.saveAll(DataList);// assume that is works correct

        //Then
        List<Data> dataArray = underTest.getBySizeId(SizeId);
        assert(dataArray.stream().count() == 3);
    }
}

如您所见,我@DataMongoTest在 DataRepositoryTest 类上使用。

根据文档:

默认情况下,使用 @DataMongoTest 注释的测试将使用嵌入式内存中的 MongoDB 进程。

当我运行测试时,测试函数访问真实的数据库文档,而不是内存中的 MongoDB。

我的问题是知道为什么它访问真实的数据库而不是内存中的 MongoDB,因为它应该根据文档默认?

标签: javaspringunit-testingspring-data-mongodbjunit-jupiter

解决方案


推荐阅读