测试 请问大家如何用 rspec + capybara 测试 view 中的单词的顺序

whitecrow · 2013年05月03日 · 最后由 whitecrow 回复于 2013年05月03日 · 2514 次阅读

比如有两个 title:‘title1’,‘title2’,要测试'title2'在'title1'的后面。

具体遇到的困难是什么?一般我会取出来两个 title,然后和 fixture 对比一下。应该就可以了。

#1 楼 @xds2000 具体场景是这样的:一个串 list 里面有 title_1 title2,分别是两个实例的 title,经过排序后,title2 在 title1 的后面,所以要写类似这样的测试:

page .shoud have( title1.should before(title2) )

没看懂,您所指的后面是什么?

#3 楼 @howiehu 就是 view 里面的文字,比如<ul><li>title1</li><li>title2</li></ul>,这样 title2 就在 title1 的后面。

我也不知道如何去判断,但是我觉得这是个比较奇怪的要求,如果是我的话,我应该只会在行为测试的过程中测试界面上是否拥有这两个文字,至于文字的顺序,我会放到对 controller 的单元测试中进行。

capybara 和 jquery 的选择器没什么差别,选个数组出来比较 index 就行了。

我觉得对于界面上元素的顺序没有测试的必要,因为这些东西随时都可能在美化的过程中产生变化,我只关注“有没有”这个问题,或者“有没有变化”,如果这些元素是通过 Controller 返回的话,那针对 controller 进行测试就可以了。

#6 楼 @raven 这个方法不错。

我的想法是对比生成的 html 就可以了

多谢,对比 html 用的 page.body.match 这个方法解决了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号