Rails 关于 Tesing 的测试 咨询帖 ~

crabby · 2012年05月09日 · 最后由 douxiance 回复于 2015年08月23日 · 3322 次阅读

关于 Tesing 的测试 书籍是:Agile Web Development with Rails (Fourth Edition)

背景: 书中每一个任务都有测试,当时我觉得先把实例跑起来,测试的事情以后再说。到第九章的时候,我才开始着测试相关部分;第九章完毕之后,购物车已构建好。

现在已有的代码如下: -rw-rw-r--. 1 Crabby Crabby 118 4 月 2 11:24 cart_test.rb drwxrwxr-x. 2 Crabby Crabby 4096 5 月 8 23:53 helpers -rw-rw-r--. 1 Crabby Crabby 122 4 月 2 11:41 line_item_test.rb -rw-rw-r--. 1 Crabby Crabby 1491 5 月 8 23:45 product_test.rb

开始做测试了,:(

困惑 1 = > 执行 rake test,报错 22 个,大多数的报错类似于如下 Error: test_product_attributes_must_not_be_empty(ProductTest): ActiveRecord::Fixture::FormatError: a YAML error occurred parsing /home/Crabby/depot/test/fixtures/ products.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowe d. Please have a look at http://www.yaml.org/faq.html

? 从提示来看,好像是说 product.yml 文件中只允许使用空格,不允许使用 tab 键,可我从书中源码对应的 rails32 版本看,不是使用空格的. rails32 版本的 product.yml 源码链接如下 http://media.pragprog.com/titles/rails4/code/rails32/depot_e/test/fixtures/products.yml

如果改版本的 product.yml 没有问题,那为啥报 yaml error parsing 相关错误?唉!

困惑 2 =>

rake test 报错太多,22 个报错虽然类似,但确实让人无法忍受,尤其是未找到具体的原因。 撇开英文第四版,我从手头上的中文第二版中找到"可以做一下模型的单元测试",我想这样做的话,一步步排除。

执行方法是 ruby test/unit/product_test.rb (先做 product 的) 又报如下错误,提示好像是 test_helper 文件找不到 [Crabby@Crabby-Lee depot]$ ruby test/unit/product_test.rb /home/Crabby/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in require': cannot load such file -- test_helper (LoadError) from /home/Crabby/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:inrequire' from test/unit/product_test.rb:1:in `'

4rd 英文版中好像未特殊说明 test_helper 文件要如何加载,但是从中文第二版中相应的章节来看,test_helper 中需要引用路径,方法是 require File.dirname(FILE) + '/../test_helper'

? 按照此方法,我加入了类似于这样的语句,提示FILE未定义,我显然不知道从哪个地方定义,只能想其他方法了. ? 发现在我的 test 目录中刚好有一个 test_helper.rb 文件,这个应该是我想要的文件,而在 test/unit/这个目录中刚好没有,于是我拷贝了 test_helper.rb 进入 unit 中,执行的时候,还是报 cannot load such file 类似的错误,OMG ! /home/Crabby/depot/test [Crabby@Crabby-Lee test]$ ls fixtures functional integration performance test_helper.rb unit

PS: rails 版本变化好大呀 英文不给力,看 4rd 费劲的很,3rd/2rd 的中文版 rails 更旧了,跟不上时代的步伐呀 真心求助~

自己顶一个,求被关注

再顶,不行我就不测试鸟~ T_T

呃,我也不是很厉害,给点意见,我建议你可以先过一遍那个 Ruby on Rails Tutorial by Michael Hartl,这个教程从头至尾都是先撰写测试,再写代码来讲解的。

至于你的购物车,你可以先去阅读关于 Test::Unit 如何配置的文档。 rake test 是会执行所有的测试的,可以试试怎么样能一个一个来,各个击破。以上两点建议。

虽然很想帮你,但感觉看了之后很晕 @Juanito 推荐的是好东西。 两点: _FILE_前后是两个空格__FILE__ YAML 是禁用用 tab 的。

把 test_helper.rb 放回到原来的位置 /test/test_helper.rb

执行单个测试 方法如下:

ruby -I test test/unit/product_test.rb

必须要 MARK 一下了

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