[AWDwR4] No JQuery call matches [:html, #cart]
实践11.5 Testing Ajax Changes,按照书上的写了test_should_create_line_item_via_ajax的测试,rake test:functionals时有错:
1) Failure: test_should_create_line_item_via_ajax(LineItemsControllerTest) [/home/csd/railsProjects/depot/test/functional/line_items_controller_test.rb:42]: Expected at least 1 element matching "tr#current_item", found 0.
我首先想到可能是line_item是空或者是cart为空,导致不会render cart 或者line_item。可是我不知道怎么在test里把服务器的响应打印出来。我还不会调试Rails呢,于是就去看了好长时间的Rails debug 。
我在app/controllers/line_items_controller.rb中各种加日志来打印出cart和line_items变量的值,发现都是对的。后来偶然机会发现可以打印出服务器的response。我在test "should create line_item via ajax"这个测试用例中使用这句:
puts "ajax reponse: #{@response.body}"
发现服务器返回的response没啥错误,返回的jquery语句是对的。后来上http://intertwingly.net/projects/AWDwR4/checkdepot-32/section-11.6.html 瞅了一眼,发现测试的断言语句有变化:
assert_select_jquery :html, '#cart' do
assert_select 'tr#current_item td', /Programming Ruby 1.9/
end
查了一下 assert_select_jquery 【http://rubydoc.info/gems/jquery-rails/2.1.3/ActionDispatch/Assertions/SelectorAssertions#assert_select_jquery-instance_method】
assert_select_jquery【https://github.com/rails/jquery-rails/blob/master/lib/jquery/assert_select.rb】 是jquery_rails中提供的,从一个JQuery响应中选择内容。
解释可以见这里。assert_select_jquery(*args, &block) ,后来理解了method即函数的意思,而不是put, delete, get等HTTP method。咱们这里是选出 id为cart的元素并且其上的jquery调用为html的内容,然后去检查这段内容里是否包含 'tr#current_item td',并且其值是 Programming Ruby 1.9
可是rake test:functionals 后还是有错:
1) Failure: test_should_create_line_item_via_ajax(LineItemsControllerTest) [/home/csd/railsProjects/depot/test/functional/line_items_controller_test.rb:42]: No JQuery call matches [:html, "#cart"]
我在网上搜了好长时间,都没有找到相关的太多信息,我就想肯定是我用错了,再次确定了一下,作者的网站上也是这么写的,assert_select_jquery 的调用应该没错,实在没招了就看了看它的源码,隐约感觉是匹配的有问题,所以测试时提示找不到。花了一个小时温习正则表达式,并分析源码中的匹配过程,发现原来是assert_select_jquery 匹配 method时,要求method后面参数中,HTML必须是双引号包裹的,不能是单引号。于是找到app/views/line_items/create.js.erb修改
$('#cart').html('<%= escape_javascript(render(@cart)) %>');
为
$('#cart').html("<%= escape_javascript(render(@cart)) %>");
再次跑测试,果然通过了。
经测试发现
assert_select 'tr#current_item td', /Programming Ruby 1.9/
和
assert_select 'tr#current_item', /Programming Ruby 1.9/
都是可以的。不明白为啥呢,如果有明白的人请指点一下。
发现没有Rails debug的中文,我看了一遍,感觉不是很难,想这个月抽空翻译一下,为开源做点微薄的贡献吧。
回到本系列的目录
转载于:https://www.cnblogs.com/Jack47/archive/2012/11/09/2762181.html
[AWDwR4] No JQuery call matches [:html, #cart]相关推荐
- jQuery1.11源码分析(8)-----jQuery调用Sizzle引擎的相关API
之所以把这部分放在这里,是因为这里用到了一些基本API,前一篇介绍过后才能使用. //jQuery通过find方法调用Sizzle引擎 //jQuery通过find方法调用Sizzle引擎 jQuer ...
- jQuery源码分析之实例find和filter方法的区别七问
问题1:jQuery.filter的源码是什么? jQuery.filter = function( expr, elems, not ) {var elem = elems[ 0 ];//如果含有第 ...
- JQuery中的动画效果
show() hide() slideUp slideDown fadeIn fadeOut animate : 自定义动画 JQuery中的动画效果.html <!DOCTYPE html&g ...
- jQuery——实现一个3D动态轮播图
先看效果图(挺好看的小妹妹,制作完gif图就这么丑了): css代码: <!DOCTYPE html> <html lang="en"> <head& ...
- jQuery 鼠标点击时变色,点击其他时还原
1.方式一可以用getElementById()方法来实现 首先要为几个div分别命名不同的id <div class="d1" id="d1">& ...
- 《Introduction to Tornado》中文翻译计划——第五章:异步Web服务
http://www.pythoner.com/294.html 本文为<Introduction to Tornado>中文翻译,将在https://github.com/alioth3 ...
- jquery2.0.3 全部源码
/*!* Includes Sizzle.js 选择器,独立的库* http://sizzlejs.com/*/ (function( window, undefined ) { //"us ...
- csdn过滤广告谷歌浏览器插件
首先要知道浏览器插件的原理. 通过访问网站,加载我们写的js脚本.这样我们就可以对你所要操作的网站进行操作啦! 首先看看谷歌的广告的代码块 如果换成你在开发这个网站,肯定直接隐藏这个class 为 c ...
- jquery-1.11.1.js
每次想要使用这个js时,总是要到官网上下载,太麻烦,现在把它收录了 jquery-1.11.1.js /*!* jQuery JavaScript Library v1.11.1* http:/ ...
最新文章
- php写出个人所得税,PHP计算个人所得税示例【不使用速算扣除数】
- 字体设置_word字体设置:如何为常用字体设置快捷键
- SP1043 GSS1 - Can you answer these queries I 猫树
- 交易机项目工作日志--2013-1-31
- 步步为营 .NET三层架构解析 七、UI的设计(登陆页面、注册页页和添加部门页面)...
- Nginx学习之四-Nginx进程同步方式-自旋锁(spinlock)
- C#LeetCode刷题之#697-数组的度( Degree of an Array)
- cpu时间片 linux,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...
- 傅里叶变换@(stft和istft)
- 用计算机画 信息技术课标要求,[引用]小学信息技术课程标准
- 研0必读!李航《统计学习方法》啃书指南
- Ruby First
- 如何写PRD (附PRD案例)
- 上海嵌联自控供应车流量统计系统
- 2022-2028全球与中国智能家居产品市场现状及未来发展趋势
- 北京内推 | 360人工智能研究院招聘计算机视觉算法研究员
- 新计算机分区,全新的电脑怎么给新硬盘分区?
- Android视频编辑SDK免费版,Android视频编辑SDK
- 建构主义“鱼牛的故事”PPT展示
- 破开C暗夜的第一道光(2)——高质量代码风格
热门文章
- TPAMI 2021 华为诺亚悉尼大学陶大程团队提出多功能卷积,助力轻量级网络
- 厉害了!国人开发的编程语言 Go+ 1.0 即将发布!
- 计算机视觉,不可能凉!
- 如何开展工业视觉检测?Halcon 圣经告诉你答案
- ShapeNet:超实时人脸特征点检测与形状拟合开源库
- 设置单元格填充方式_【WPS神技能】Excel表格中单元格内的双色填充效果有点意思!...
- 2020-11-08
- 村庄规划中核心技术(村土地利用规划方面)
- oracle ora32771,Oracle的文件号、相对文件号及其他(续)
- PointNet论文笔记