关于 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:in
require'
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 更旧了,跟不上时代的步伐呀 真心求助~