Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Boot:测试定制MongoTemplate转换器_Spring_Spring Boot - Fatal编程技术网

Spring Boot:测试定制MongoTemplate转换器

Spring Boot:测试定制MongoTemplate转换器,spring,spring-boot,Spring,Spring Boot,我将此自定义转换器用于我的Spring Boot服务: @Configuration public class MongoConfig { @Bean public MongoCustomConversions customConversions(){ List<Converter<?,?>> converters = new ArrayList<>(); converters.

我将此自定义转换器用于我的Spring Boot服务:

@Configuration
public class MongoConfig {

        @Bean
        public MongoCustomConversions customConversions(){
            List<Converter<?,?>> converters = new ArrayList<>();
            converters.add(ReferenceWriterConverter.INSTANCE);
            return new MongoCustomConversions(converters);
        }

        @WritingConverter
        enum ReferenceWriterConverter implements Converter<Reference, DBObject> {

            INSTANCE;

            @Override
            public String convert(Reference reference) {
                //do stuff
            }
        }
    }
编辑2

我还想使用自定义测试属性。我的意思是,目前,我们正在将属性设置为
src/test/resources/application.properties

spring.data.mongodb.host: localhost
spring.data.mongodb.port: 27017

如何加载这些文件属性?

解决方案1

如果要使用Spring上下文对其进行测试,可以将测试类注释为
SpringBootTest
,并自动连接
MongoTemplate
。然后,它应该包含您的自定义转换,以便您测试它们:

@RunWith(SpringRunner.class)
@SpringBootTest
public class ModelTest {

    private List<Reference> references;

    @Autowired
    private final MongoTemplate mongoTemplate;

    public ModelTest() {
        this.references = new ArrayList<Reference>();
    }

    @Before
    public void setUp() {
        Reference reference = new Reference();
        reference.setId("Ref1");
        reference.setTimestamp(new Date());

        Metadata met = new Metadata();
        met.setId("Mdt1");
        met.setUser("user");
        met.setCreationTimestamp(new Date());

        met.setMetadata("[{'departament': 'JUST'}]");

        reference.setMetadata(met);

        this.references.add(reference);

        mongoTemplate.insert(reference);
    }

    /**
     * Assert Office mime type documents.
     */
    @Test
    public void office() {
        fail("Not yet implemented");
    }
}

非常感谢@Michael。目前,我有两个问题:1。我现在想知道如何加载自定义测试属性(我已经编辑了这篇文章)。2.
@SpringBootTest
位于何处(依赖关系)?没问题:)1)如果使用
SpringBootTest
,这些属性应自动用于您的
MongoTemplate
。2) 这是弹簧启动启动器测试的一部分:已解决。它正在获取一个
无法立即加载ApplicationContext
。有什么想法吗?你能把stacktrace贴出来吗?我猜Spring应用程序上下文无法初始化,因为缺少配置或类似的情况。我已经详细介绍了这个问题
@RunWith(SpringRunner.class)
@SpringBootTest
public class ModelTest {

    private List<Reference> references;

    @Autowired
    private final MongoTemplate mongoTemplate;

    public ModelTest() {
        this.references = new ArrayList<Reference>();
    }

    @Before
    public void setUp() {
        Reference reference = new Reference();
        reference.setId("Ref1");
        reference.setTimestamp(new Date());

        Metadata met = new Metadata();
        met.setId("Mdt1");
        met.setUser("user");
        met.setCreationTimestamp(new Date());

        met.setMetadata("[{'departament': 'JUST'}]");

        reference.setMetadata(met);

        this.references.add(reference);

        mongoTemplate.insert(reference);
    }

    /**
     * Assert Office mime type documents.
     */
    @Test
    public void office() {
        fail("Not yet implemented");
    }
}
public class ReferenceWriterConverterTest {

    private ReferenceWriterConverter converter;

    @Before
    public void setUp() {
        converter = ReferenceWriterConverter.INSTANCE;
    }

    //test stuff
}