java - Spring MVC View / Controller 对已知良好图 block 设置的测试失败并出现断言错误

标签 java spring tiles2 spring-test

我有这个 MVC Controller :

@RequestMapping(produces = "text/html")
public String list(@RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, @RequestParam(value = "sortFieldName", required = false) String sortFieldName, @RequestParam(value = "sortOrder", required = false) String sortOrder, Model uiModel) {
    if (page != null || size != null) {
        int sizeNo = size == null ? 10 : size.intValue();
        final int firstResult = page == null ? 0 : (page.intValue() - 1) * sizeNo;
        uiModel.addAttribute("smaker", Smak.findSmakEntries(firstResult, sizeNo, sortFieldName, sortOrder));
        float nrOfPages = (float) Smak.countSmaker() / sizeNo;
        uiModel.addAttribute("maxPages", (int) ((nrOfPages > (int) nrOfPages || nrOfPages == 0.0) ? nrOfPages + 1 : nrOfPages));
    } else {
        uiModel.addAttribute("smaker", Smak.findAllSmaker(sortFieldName, sortOrder));
    }
    return "smaker/list";
}

}

我使用 Tiles 2.2.2,当 Web 应用程序在 Jetty 中运行时,我会呈现此 View ,但我想评估 spring-test,所以我从这个简单的测试开始:

@RunWith(SpringJUnit4ClassRunner.class)
public class ViewsControllerTests extends AbstractContextControllerTests {

    private MockMvc mockMvc;

    @Before
    public void setup() throws Exception {
        this.mockMvc = webAppContextSetup(this.wac).alwaysExpect(status().isOk()).build();
    }//wac is in the superclass which loads it from file

    @Test
    public void getSmakerView() throws Exception {
        this.mockMvc.perform(get("/smaker"))
                .andExpect(view().name(containsString("smaker/list")));
    }

}

确实,我有渲染 View [org.springframework.web.servlet.view.tiles2.TilesView name 'smaker/list';当我在 Jetty 中运行该项目时,在日志中。

然而,当我运行测试时,上面的测试失败了

java.lang.AssertionError: Expected: a string containing "smaker/list but: was "uncaughtException"

这是我的 SimpleMappingExceptionResolver 的默认 ErrorView。 所以我的测试或我对其作用的假设似乎有问题。你知道我的错误可能在这里吗?

最佳答案

问题是由调用引起的

uiModel.addAttribute("smaker", Smak.findAllSmaker(sortFieldName, sortOrder));

尤其是这部分:Smak.findAllSmaker 如果没有任何应用程序上下文以及由此产生的依赖项注入(inject)或模拟此行将产生您面临的问题。

关于java - Spring MVC View / Controller 对已知良好图 block 设置的测试失败并出现断言错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22524516/

相关文章:

java - Spring Oauth2无法获取访问 token 问题

java - Hibernate JPA orm.xml 映射 - java.lang.RuntimeException : Trying to instanciate interface javax. persistence.Table 包含未知元素

java - 填充 ComboBox 后 FXML 场景生成器无效属性

java - "Class header expected instead"错误

java - ScopedProxy 如何决定使用什么 Session?

spring - Apache Tiles 2.5 - 将菜单元素标记为事件状态

spring - Thymeleaf 3 和 Tiles2 集成

java - Struts2 中的多种结果类型?

Java Spring 将电子邮件 cookie 减半

JavaFx-表格 View : How to use custom Comparator<T> for sorting?