微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 XML 文件提供/注入 bean 以测试其余控制器?

如何解决从 XML 文件提供/注入 bean 以测试其余控制器?

我试图在测试之前将一些对象注入到我的 rest api 中。 这是我的 rest 控制器的方法,它应该通过 id 获取一个对象:

@RestController
@RequestMapping("obj")
public class ObjectController {

    @Autowired
    ObjService testDetection;

    @GetMapping("/{id}")
    public ResponseEntity<MyObject> findById(@PathVariable String id) {
        for (MyObject obj : testDetection.getobjects()) {
            if (obj.getId().equals(id))
            return ResponseEntity.ok(obj);
        }

        return ResponseEntity.status(HttpStatus.NOT_FOUND).body(null);
    }
}

这是我的测试类加上测试方法。当我开始这个测试时,我希望进一步定义的 bean 已经加载,我可以执行测试并返回状态代码 200。

@WebMvcTest(ObjectController.class)
@SpringJUnitConfig(TestConfig.class)
public class MvcTest {

    @Autowired
    mockmvc mockmvc;

    @Autowired
    ObjService testDetection;

    @Test
    public void whenRuleIdExists_thenHttp200() {
        mockmvc.perform(mockmvcRequestBuilders.get("/obj/102"))
            .andDo(mockmvcResultHandlers.print())
            .andExpect(mockmvcResultMatchers.status().is(HttpStatus.OK.value()));
    }
}

引用的TestConfig.class

@SpringBootConfiguration
@Import({ObjectController.class})
@ImportResource({"classpath*:testdetection.xml"})
public class TestConfig {

    @Bean
    public ObjService testDetection() {
        return new ObjService();
    }
}

这是我的服务:

public class ObjService {
    private List<MyObject> objList = new ArrayList<MyObject>();

    public MyObject addobject(MyObject obj) {
        objList.add(obj);
        return obj;
    }

    public void setobjects(List<MyObject> objList) {
        this.objList = objList;
    }

    public synchronized List<MyObject> getobjects() {
        return objList;
    }
}

我想注入的 xml 文件看起来像这样我有数据可以测试我的休息控制器。它在我的测试资源文件夹中。

<?xml version='1.0' encoding='ISO-8859-1'?>
<beans xmlns='http://www.springframework.org/schema/beans' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
    xmlns:context='http://www.springframework.org/schema/context'
    xsi:schemaLocation='http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd'>

    <bean id='102. obj' class='this.is.some.path.MyObject'>
        <property name='id' value='102' />
    </bean>

    <bean id='testDetection' class='this.is.some.path.ObjService'>
        <property name='objects'>
            <list>
            <ref bean='102. obj' />
            </list>
        </property>
    </bean>
</beans>

如果有人能告诉我如何使这些 bean 可用,以便测试方法可以直接对其执行 get 请求,我真的非常感激?如果我混淆了词汇,我很抱歉。我对此很陌生。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?