【问题标题】:Asserting model object attributes断言模型对象属性
【发布时间】:2012-11-22 08:17:50
【问题描述】:

我在 Spring 控制器测试中有这个测试代码

Student student = studentService.getByNumber(767001);
    student.setCourseRights(courseRightService.getCourseRights(student));
    model.addAttribute("student", student);


    Student s = (Student) model.asMap().get("student"); 

我怎样才能掌握学生的属性来断言它们?

    Assert.assertEquals(1, rights.size());   

List<GrantedCourseRight> rights = (List<GrantedCourseRight>) model.asMap().get("student.courseRights");

不工作,allthought student.courseRight 变量显示在 jsp 页面上。我只需要将列表单独放在模型上吗?

【问题讨论】:

    标签: java spring testing junit


    【解决方案1】:

    Spring Test 项目提供了一整套功能,允许您在 Junit 中测试您的 Spring 应用程序。基本上,您希望在运行 Junit 测试之前建立应用程序上下文,这将允许您使用依赖注入来注入服务的 bean。

    为了建立这种支持,我们用几个 Spring 注释来注释我们的测试类。

    MyUnitTest.java

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration
    @Transactional
    public class SkillRepositoryTest {
    
        @Autowired
        SkillRepository repository;
    
        @Test
        public void findOneTest(){
            Skill skill = repository.findOne(1);
            assertNotNull(skill);
            assertEquals("Java", skill.getName());
        }
    }
    

    运行测试时,Spring 将在同一目录中查找名为 MyUnitTest-context.xml 的 Spring 配置文件。在第一次尝试查找应用程序上下文时,它只是将 -context.xml 后缀添加到您的测试类名称。 @ContextConfiguration 注解还包含一个可用于定位应用程序上下文的元素。

    【讨论】:

    • 我使用的是 JMock,而不是真正的 repos。
    猜你喜欢
    • 1970-01-01
    • 2016-06-21
    • 2021-12-16
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多