实践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]相关推荐

  1. jQuery1.11源码分析(8)-----jQuery调用Sizzle引擎的相关API

    之所以把这部分放在这里,是因为这里用到了一些基本API,前一篇介绍过后才能使用. //jQuery通过find方法调用Sizzle引擎 //jQuery通过find方法调用Sizzle引擎 jQuer ...

  2. jQuery源码分析之实例find和filter方法的区别七问

    问题1:jQuery.filter的源码是什么? jQuery.filter = function( expr, elems, not ) {var elem = elems[ 0 ];//如果含有第 ...

  3. JQuery中的动画效果

    show() hide() slideUp slideDown fadeIn fadeOut animate : 自定义动画 JQuery中的动画效果.html <!DOCTYPE html&g ...

  4. jQuery——实现一个3D动态轮播图

    先看效果图(挺好看的小妹妹,制作完gif图就这么丑了): css代码: <!DOCTYPE html> <html lang="en"> <head& ...

  5. jQuery 鼠标点击时变色,点击其他时还原

    1.方式一可以用getElementById()方法来实现 首先要为几个div分别命名不同的id <div class="d1" id="d1">& ...

  6. 《Introduction to Tornado》中文翻译计划——第五章:异步Web服务

    http://www.pythoner.com/294.html 本文为<Introduction to Tornado>中文翻译,将在https://github.com/alioth3 ...

  7. jquery2.0.3 全部源码

    /*!* Includes Sizzle.js 选择器,独立的库* http://sizzlejs.com/*/ (function( window, undefined ) { //"us ...

  8. csdn过滤广告谷歌浏览器插件

    首先要知道浏览器插件的原理. 通过访问网站,加载我们写的js脚本.这样我们就可以对你所要操作的网站进行操作啦! 首先看看谷歌的广告的代码块 如果换成你在开发这个网站,肯定直接隐藏这个class 为 c ...

  9. jquery-1.11.1.js

       每次想要使用这个js时,总是要到官网上下载,太麻烦,现在把它收录了 jquery-1.11.1.js /*!* jQuery JavaScript Library v1.11.1* http:/ ...

最新文章

  1. php写出个人所得税,PHP计算个人所得税示例【不使用速算扣除数】
  2. 字体设置_word字体设置:如何为常用字体设置快捷键
  3. SP1043 GSS1 - Can you answer these queries I 猫树
  4. 交易机项目工作日志--2013-1-31
  5. 步步为营 .NET三层架构解析 七、UI的设计(登陆页面、注册页页和添加部门页面)...
  6. Nginx学习之四-Nginx进程同步方式-自旋锁(spinlock)
  7. C#LeetCode刷题之#697-数组的度( Degree of an Array)
  8. cpu时间片 linux,能讲一下在Linux系统中时间片是怎么分配的还有优先级的具体算法是...
  9. 傅里叶变换@(stft和istft)
  10. 用计算机画 信息技术课标要求,[引用]小学信息技术课程标准
  11. 研0必读!李航《统计学习方法》啃书指南
  12. Ruby First
  13. 如何写PRD (附PRD案例)
  14. 上海嵌联自控供应车流量统计系统
  15. 2022-2028全球与中国智能家居产品市场现状及未来发展趋势
  16. 北京内推 | 360人工智能研究院招聘计算机视觉算法研究员
  17. 新计算机分区,全新的电脑怎么给新硬盘分区?
  18. Android视频编辑SDK免费版,Android视频编辑SDK
  19. 建构主义“鱼牛的故事”PPT展示
  20. 破开C暗夜的第一道光(2)——高质量代码风格

热门文章

  1. TPAMI 2021 华为诺亚悉尼大学陶大程团队提出多功能卷积,助力轻量级网络
  2. 厉害了!国人开发的编程语言 Go+ 1.0 即将发布!
  3. 计算机视觉,不可能凉!
  4. 如何开展工业视觉检测?Halcon 圣经告诉你答案
  5. ShapeNet:超实时人脸特征点检测与形状拟合开源库
  6. 设置单元格填充方式_【WPS神技能】Excel表格中单元格内的双色填充效果有点意思!...
  7. 2020-11-08
  8. 村庄规划中核心技术(村土地利用规划方面)
  9. oracle ora32771,Oracle的文件号、相对文件号及其他(续)
  10. PointNet论文笔记