论坛首页 Ruby版 rails

测试夹具Test Fixtures错误! [实在没有找出问题的解决办法] ==> 我终于找出问题的原因了! 谢谢各位

浏览 3962 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-05-30
lgn21st 写道
阿?那么楼上兄台将测试代码贴给楼主吧,我手头上还有其他事情,先跑路了。

就是把你的代码,加上LZ的测试代码在上面,然后测试,啥问题也没有。

不过,刚才我把原来products表中的数据全部清除(也只留了这一个表了,没有关联关系了),然后在测试就没有问题了。估计和这个有关吧。:(
   
0 请登录后投票
最后更新时间:2007-05-30
刚才看走眼了,楼主写的测试断言代码没有问题,在老板本的rails中似乎可以把fixture当做一个同名实例变量直接访问,到1.2似乎就不可以了,不过我测试从来都是从测试数据看中取数据测试。
   
0 请登录后投票
最后更新时间:2007-05-31
我写的断言没有问题,我用你的夹具就可以通过!!!  而且我把你的夹具中":"后故意多添加了很多空格,依然通过! 所以,可以肯定的是,不是空格问题,也不是因为":"和"/"这些字符的问题,也不是数据库的问题.
而且你说的时间问题,我也试过,用我以前写的时间,依然通过.
这我就很纳闷了!
lgn21st 写道
刚才看走眼了,楼主写的测试断言代码没有问题,在老板本的rails中似乎可以把fixture当做一个同名实例变量直接访问,到1.2似乎就不可以了,不过我测试从来都是从测试数据看中取数据测试。
   
0 请登录后投票
最后更新时间:2007-05-31
很奇怪,楼主用的是什么平台?什么编辑器呀?
我在Ubuntu7.04下全部都用vim写代码,系统默认字符编码是utf8.
的确yaml没有冒号后面空格限制,我之前的帖子是武断结论了。单yaml格式对空格是很敏感的,很多人包括官方文档都提到。且不能用tab,我在vim里面将tab映射成2个空格,写测试时间也不短了,从来都没有碰到yaml加载方面的问题。楼主关注一下自己的平台,或者把出错代码上传大家看看吧。
   
0 请登录后投票
最后更新时间:2007-05-31
我终于找到问题出在哪里了!!!!!!!!!!!!!!!!!!!!!!!!!

是空格的问题!!!
所有数据库字段的不能顶格写, 必须有一个空格!!!!!
每一个名/值对必须由冒号分开,并且用空格缩进(不能用TABLE键缩进)!!!
我该打!! 书上都注明了要用空格缩进!! 我误看成需要空格分开!! 看书不仔细,让我郁闷了好几天!!

最后,非常感谢楼上的各位朋友,帮我找问题. 呵呵....我也是从lgn21st给我的那个demo中的夹具代码和我自己写的夹具代码一一对应了一下,没有发现什么不同,但是直接拷贝他的就能用,我就纳闷了!!
最后发现他的除了第一行,每行前面都有一个空格,除了这个,没有别的不同了.
再该自己的,果然测试通过!!! 再看书本,觉得书上应该说了呀!!!
再仔细一看书,想扇自己一耳光,NND!!

# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
version_control_book :
 id : 1
 title : Pragmatic Version Control
 description : How to use version control
 image_url : http://www.rubyonrails.org/images/awdr2.gif
 price : 29.95
 date_available : 2007-05-30 20:07:28.926981 +08:00
automation_book :
  id : 2
  title: Pragmatic Project Automation
  description: How to automate your project
  image_url :  http://images.dangdang.com/images/9240772_b.jpg
  price : 39.95
  date_available : 2007-05-30 20:07:28.926981 +08:00
   
0 请登录后投票
最后更新时间:2007-05-31
但是我还是有纳闷的地方,为什么它就偏偏说image_url这里参数错误呢!!
而且总是说我上面代码的第13行错误,而不是别的地方呢? 非常奇怪!
而且我调试的过程中,我发现rails把这些字段插入到数据库中的sql语句很奇怪. 是这样的格式:
INSERT INTO products (`image_url`, `price`, `title`, `id`, `description`, `date_available`) VALUES ('http://images.dangdang.com/images/9240772_b.jpg', 39.95, 'Pragmatic Project Automation', 2, 'How to automate your project', '2007-05-30 20:07:28')

但是我在数据库中定义字段的顺序不是这样的,而且我在夹具中写的顺序也不是这样的. 所以我猜测,rails是按照yml文件中的内容倒插入数据库中,字段顺序就不知道怎么排序法了. 这样第一个访问的就是我的yml中的13行的image_url,这样才报这一行的错误了! 只能这样解释了. 呵呵....
   
0 请登录后投票
最后更新时间:2007-05-31
lgn21st 写道

看到结果:
--- !ruby/object:Product 
attributes: 
  image_url: http://www.rubyonrails.org/images/awdr2.gif
  date_available: 2007-05-30 20:07:28.926981 +08:00
  price: 29.95
  title: Pragmatic Version Control
  id: 1
  description: How to use version control
new_record: true


从数据库字段构建出来的对象是个hash对象实例,第一个对象属性就是image_url,所以会在这里报错。
至于顺序,跟自定义顺序无关,也不是倒序,是hash对象内部按照key的class_id或者hash_code排序吧,我猜的。
   
0 请登录后投票
最后更新时间:2007-06-30
我刚才测试时也遇到这个问题,你当时的心情我是再明白不过了,谢谢你,因为你的分享我也少走了不少弯路,这使我更加愿意和别人分享自己的成功与失败,我觉得回报帮助最好的办法就是尽力帮助那些需要帮助的人!
同时另一个问题问你:
D:\rails\depot>ruby test/unit/product_test.rb
DEPRECATION WARNING: model is deprecated and will be removed from Rails 2.0  See http://www.rubyonra
ils.org/deprecation for details. (called from D:/rails/depot/config/../app/controllers/application.r
b:7)
DEPRECATION WARNING: depend_on is deprecated and will be removed from Rails 2.0  See http://www.ruby
onrails.org/deprecation for details. (called from model_without_deprecation at c:/ruby/lib/ruby/gems
/1.8/gems/actionpack-1.13.3/lib/action_controller/deprecated_dependencies.rb:13)
上面两个DEPRECATION WARNING怎么处理,一起学习和享受ruby on rails!
   
0 请登录后投票
最后更新时间:2007-06-30
wuxu1314 写道
我刚才测试时也遇到这个问题,你当时的心情我是再明白不过了,谢谢你,因为你的分享我也少走了不少弯路,这使我更加愿意和别人分享自己的成功与失败,我觉得回报帮助最好的办法就是尽力帮助那些需要帮助的人!
同时另一个问题问你:
D:\rails\depot>ruby test/unit/product_test.rb
DEPRECATION WARNING: model is deprecated and will be removed from Rails 2.0  See http://www.rubyonra
ils.org/deprecation for details. (called from D:/rails/depot/config/../app/controllers/application.r
b:7)
DEPRECATION WARNING: depend_on is deprecated and will be removed from Rails 2.0  See http://www.ruby
onrails.org/deprecation for details. (called from model_without_deprecation at c:/ruby/lib/ruby/gems
/1.8/gems/actionpack-1.13.3/lib/action_controller/deprecated_dependencies.rb:13)
上面两个DEPRECATION WARNING怎么处理,一起学习和享受ruby on rails!

deprecated的东西一般都有替代的表述方式的
   
0 请登录后投票
最后更新时间:2007-06-30
hideto 写道
wuxu1314 写道
我刚才测试时也遇到这个问题,你当时的心情我是再明白不过了,谢谢你,因为你的分享我也少走了不少弯路,这使我更加愿意和别人分享自己的成功与失败,我觉得回报帮助最好的办法就是尽力帮助那些需要帮助的人!
同时另一个问题问你:
D:\rails\depot>ruby test/unit/product_test.rb
DEPRECATION WARNING: model is deprecated and will be removed from Rails 2.0  See http://www.rubyonra
ils.org/deprecation for details. (called from D:/rails/depot/config/../app/controllers/application.r
b:7)
DEPRECATION WARNING: depend_on is deprecated and will be removed from Rails 2.0  See http://www.ruby
onrails.org/deprecation for details. (called from model_without_deprecation at c:/ruby/lib/ruby/gems
/1.8/gems/actionpack-1.13.3/lib/action_controller/deprecated_dependencies.rb:13)
上面两个DEPRECATION WARNING怎么处理,一起学习和享受ruby on rails!

deprecated的东西一般都有替代的表述方式的
今天查看了一下源代码:C:\ruby\lib\ruby\gems\1.8\gems\actionpack-1.13.3\lib\action_controller下deprecated_dependencies.rb中model()的定义如下
# Specifies a variable number of models that this controller depends on. Models are normally Active Record classes or a similar
      # backend for modelling entity classes.
      def model(*models)
        require_dependencies(:model, models)
        depend_on(:model, models)
      end
      deprecate :model
再查看了http://www.rubyonrails.org/deprecation并没有发现替代的方式。
   
0 请登录后投票
论坛首页 Ruby版 rails

跳转论坛:
JavaEye推荐