<p> 如果審視一下HomeController。可能注意不到這些注解梦裂,看到的僅僅是一個(gè)簡(jiǎn)單的POJO 。我們都知道測(cè)試POJO是很容易的盖淡。
因此年柠,我們可以編寫(xiě)一個(gè)簡(jiǎn)單的類來(lái)測(cè)試HomeController,如下所示:</p>
<p><span style="font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";"> 程序清單5.5 HomeControllerTest:測(cè)試HomeController</span>
</p><p/><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/24744315-d04d4627f1279632.jpeg" img-data="{"format":"jpeg","size":24478,"height":322,"width":746}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p> 根據(jù)您的描述禁舷,程序清單5.5中的測(cè)試是簡(jiǎn)單的彪杉,它只測(cè)試了home()方法的行為。測(cè)試直接調(diào)用home()方法牵咙,并斷言返回的字符串包含"home"值派近。
</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/24744315-8f7d8a3608a68cda.jpeg" img-data="{"format":"jpeg","size":11678,"height":105,"width":743}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/24744315-36ceffdb60f465c4.jpeg" img-data="{"format":"jpeg","size":13568,"height":123,"width":748}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
為了演示如何測(cè)試Spring MVC控制器,我們重寫(xiě)了HomeControllerTest洁桌,并使用了Spring MVC中的新測(cè)試特性渴丸。</p><p> 程序清單5.6展示了新的HomeControllerTest。
程序清單5.6 改進(jìn)HomeControllerTest
</p><div class="image-package"><img src="https://upload-images.jianshu.io/upload_images/24744315-17ae394cd26cbae9.jpeg" img-data="{"format":"jpeg","size":34579,"height":439,"width":750}" class="uploaded-img" style="min-height:200px;min-width:200px;" width="auto" height="auto"/>
</div><p>
新版本的測(cè)試相比之前的版本只多了幾行代碼,但它更完整地測(cè)試了HomeController谱轨。</p><p> 這次測(cè)試不是直接調(diào)用home()方法并測(cè)試返回值戒幔,而是發(fā)起了對(duì)"/"的GET請(qǐng)求,并斷言結(jié)果視圖的名稱為"home"土童。
首先诗茎,它使用HomeControllerMockMvcBuilders.standaloneSetup()創(chuàng)建一個(gè)MockMvc實(shí)例,并調(diào)用build()方法進(jìn)行構(gòu)建献汗。然后敢订,使用MockMvc實(shí)例執(zhí)行針對(duì)"/"的GET請(qǐng)求,并設(shè)置期望得到的視圖名稱罢吃。
</p>