百里香Spring测试的意见

我最近将其转换为thymeleaf ,以便在基于Spring的Web应用程序中进行视图模板化,而不是jsp。 百里香叶文档中所有关于为什么百叶香叶在jsp上为何能保持水分的争论都被我肯定了。

除了能够预览模板之外,对我来说,主要原因之一是视图在运行时的呈现方式。 尽管应用程序堆栈必须将jsp的呈现推迟到servlet容器,但它可以完全控制thymeleaf模板的呈现。 为了进一步说明这一点,使用jsp作为视图技术,应用程序仅返回jsp的位置,并且取决于servlet容器来呈现jsp。

那么,为什么这又是一个重要原因–因为在spring-test模块中使用了mvc测试支持 ,所以现在可以声明实际呈现的内容,而不仅仅是视图的名称。

考虑一个示例Spring MVC控制器:

@Controller
@RequestMapping("/shop")
public class ShopController {...@RequestMapping("/products")public String listProducts(Model model) {model.addAttribute("products", this.productRepository.findAll());return "products/list";}
}

如果该视图基于jsp,我将进行如下测试:

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = SampleWebApplication.class)
public class ShopControllerWebTests {@Autowiredprivate WebApplicationContext wac;private MockMvc mockMvc;@Beforepublic void setup() {this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();}@Testpublic void testListProducts() throws Exception {this.mockMvc.perform(get("/shop/products")).andExpect(status().isOk()).andExpect(view().name("products/list"));}
}

断言仅在视图名称上。

现在,考虑使用百里香叶作为查看技术的测试:

@Test
public void testListProducts() throws Exception {this.mockMvc.perform(get("/shop/products")).andExpect(status().isOk()).andExpect(content().string(containsString("Dummy Book1")));
}

在这里,我断言实际的渲染内容。

这确实很好,但是使用jsp时,我必须验证使用真实容器在运行时正确渲染了jsp,而使用thymeleaf,我可以纯粹使用测试来验证渲染是否干净。

翻译自: https://www.javacodegeeks.com/2014/04/spring-test-with-thymeleaf-for-views.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

路由与交换--交换机常用配置及其实验案例

1 交换机常用配置命令 1.1 配置主机名与口令 Switch>enable Switch#config t Switch(config)#hostname SA SA(config)#enable password cisco(明文) SA(config)#enable secret cisco(暗文) SA(config)#exit SA#show running-co…

js使用工具将表单封装成json字符串传到后台,js截取字符串(学生笔记)

<script src"js/jquery.min.js"></script><script src"https://cdn.bootcss.com/jquery.serializeJSON/2.9.0/jquery.serializejson.js"></script><script>// / //原始版本// $("#1").click(function(){// …

linux自动启动network服务,Windows/Linux 创建开机启动服务

系统服务是一种应用程序类型&#xff0c;它在后台运行。服务应用程序通常可以在本地和通过网络为用户提供一些功能。有些软件无需安装解压就能使用&#xff0c;或者在安装时未向系统注册服务。如果我们需要开机启动&#xff0c;需要手动创建服务。Windows系统篇相对于在注册表中…

对 Vue 的理解(一)

一、什么是 Vue ? 首先&#xff0c;Vue 是一个 MVVM 框架&#xff0c;M -- 模型&#xff0c;就是用来定义驱动的数据&#xff0c;V -- 视图&#xff0c;是经过数据改变后的 html&#xff0c;VM -- 框架视图&#xff0c;就是用来实现双向绑定的中间桥梁。Vue.js 是采用数据劫持…

Nginx做前端Proxy时TIME_WAIT过多的问题

我们的DSP系统目前基本非凌晨时段的QPS都在10W以上&#xff0c;我们使用Golang来处理这些HTTP请求&#xff0c;Web服务器的前端用Nginx来做负载均衡&#xff0c;通过Nginx的proxy_pass来与Golang交互。由于nginx代理使用了短链接的方式和后端交互的原因&#xff0c;使得系统TIM…

JDK 8功能的可疑方面

我们大多数使用Java进行开发的人通常都热衷于JDK 8附带的功能和改进。 但是&#xff0c;最近有几篇文章指出了某些功能可能会被滥用和滥用&#xff0c;并可能在将来导致其他问题。 这些功能使我想起了J2SE 5中引入的自动装箱功能&#xff0c;虽然有其有用的情况&#xff0c;但是…

Xshell 基本使用方式 (1) -- 使用Xshell 连接 VMware下的linux系统

在VMware的虚拟机设置下的网络适配器设置成桥接模式&#xff0c;点击确定。 在终端中输入ifconfig命令查看IP 打开Xshell 新建会话 输入刚刚获取的IP地址&#xff0c;我的是219.219.198.225 如果点击右侧的用户身份验证 输入你的linux登录用户名以及密码 点击连接 可以看到已经…

linux 串口 qt,Linux-QT4.7 实现串口通信

在qt5版本以下&#xff0c;想要实现串口通信需要两个集成类&#xff0c;posix_qextserialport 和 qextserialbase&#xff0c;需要的可以移步到 下载点。在posix_qextserialport这个类中关于串口设置的定义很详细&#xff0c;常用的写法一般是Posix_QextSerialPort * myCom;myC…

JS实现2048

2048这个游戏是通过对二维数组的操作来实现的&#xff0c;其算法核心如下&#xff1a; &#xff08;以一行左移为例&#xff09; c从0开始&#xff0c;遍历当前行中的元素&#xff0c;到<CN-1&#xff08;CN是一个常量&#xff0c;表示的是游戏格子的列数&#xff09;结束&a…

django01

Django的下载与基本命令: 1、下载Django&#xff1a; pip3 install django 2、创建一个django project django-admin.py startproject mysite manage.py ----- Django项目里面的工具&#xff0c;通过它可以调用django shell和数据库等。    settings.py ---- 包含了项目的…

Maven和Java多版本模块

介绍 通常&#xff0c;项目具有最低Java版本要求&#xff0c;并且适用于其所有模块。 但是每条规则都有其例外&#xff0c;最近我偶然发现了以下问题。 我的一个开源项目对大多数模块要求使用Java 1.6&#xff0c;除了一个要求1.7版本的项目。 当集成具有与您自己的项目不同的…

鼠标样式设置

<span style"cursor:auto">浏览器设置的光标</span><br /> <span style"cursor:default">默认鼠标箭头</span> <span style"cursor:pointer">一只手的形状</span> <span style"cursor:text&…

如何在linux环境下安装kvm,如何在Linux发行版上安装和配置KVM和Open vSwitch?

在如今多租户模式的数据中心环境下&#xff0c;虚拟化技术正从传统的基于虚拟机管理程序的服务器虚拟化&#xff0c;扩展到网络虚拟化。在这种环境下&#xff0c;基于软件的虚拟交换机通常连同虚拟机管理程序一起部署在服务器上&#xff0c;串联起了不同虚拟机之间传送的流量。…

hanlp中的N最短路径分词

N-最短路径 是中科院分词工具NLPIR进行分词用到的一个重要算法&#xff0c;张华平、刘群老师在论文《基于N-最短路径方法的中文词语粗分模型》中做了比较详细的介绍。该算法算法基本思想很简单&#xff0c;就是给定一待处理字串&#xff0c;根据词典&#xff0c;找出词典中所有…

怎么在ReactNative里面使用Typescript

今天来搞一搞怎么搭建一个可以使用Typescript的ReactNative环境好吧&#xff0c;一句废话不多说&#xff0c;直接开始好吧 1.全局安装create-react-native-app yarn global add create-react-native-app 2.create-react-native-app 你的项目名称 例如&#xff1a;create-r…

如何不使用Java 8默认方法

警告&#xff1a;一旦阅读&#xff0c;您将无法看不到它 我在上一篇博客文章中讨论了默认方法的多重继承&#xff0c;以及它们在编译和运行时的行为。 这周&#xff0c;我将研究如何使用默认方法进行真正的继承&#xff0c;实际上&#xff0c;默认方法并不是为这种方法而设计的…

linux mint 18.3 内核,Linux Mint 18.3 “Sylvia” Cinnamon正式发布上线

Linux Mint创建者Clement Lefebvre今天宣布Linux Mint 18.3 “"Sylvia” Cinnamon和MATE Beta版本正式发布和上线。Linux Mint 18.3基于Ubuntu 16.04 LTS(Xenial Xerus)&#xff0c;搭载Linux Kernel 4.10内核&#xff0c;将持续到2021年获得更新和安全补丁。  Linux Mi…

浏览器兼容问题及解决方案

1.图片间隙 A)div中的图片间隙&#xff08;该bug出现在IE6以及更低版本当中&#xff09; 描述&#xff1a;在div中插入图片时&#xff0c;图片会将div下方撑大三像素 hack1&#xff1a;将</div>和<img>写在一行上 hack2&#xff1a;将<img>转化为块状元素&am…

Java 8星期五:Java 8的阴暗面

在Data Geekery &#xff0c;我们喜欢Java。 而且&#xff0c;由于我们真的很喜欢jOOQ的流畅的API和查询DSL &#xff0c;我们对Java 8将为我们的生态系统带来什么感到非常兴奋。 Java 8星期五 每个星期五&#xff0c;我们都会向您展示一些不错的教程风格的Java 8新功能&#…

SQL,HQL,CQL,JPQL了解

SQL&#xff08;Structured Query Language&#xff09; 是关系数据库查询语言。from后面跟的是“表名”&#xff0c;where后用“表中字段”做条件 HQL&#xff08;Hibernate Query Language&#xff09; 是面向对象的查询&#xff0c;from后面跟的是“表名”&#xff0c;where…