如何解决从 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 举报,一经查实,本站将立刻删除。