浏览 3797 次
锁定老帖子 主题:Rails单元测试的一点点疑惑
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-03
测试类一 ruby 代码
测试类二 ruby 代码
表间关系: user 与 blog 是一对一,blog与 blog_members是一对多,share_catagories与shares也是一对多,user与shares也是一对多 问题症状: 如果先运行ShareTest,测试通过.再运行BlogTest时夹具在测试方法运行前初始化数据,实际上是删除表再建表的一个过程,但因为前面运行过ShareTest了,此时在对user表初始时就会发生有外键引用(shares),无法初始化(fixtures),导致测试失败. 解决方法: 将表间的外键关系删除. 这个问题到也不是什么大问题,后来看了一下typo的建表脚本,确实是没有外键,但有点想不明白,难道在设计数据库时不需要用到外键?还是说在测试时将外键删除掉,正式发布时还在用带有外键的脚本建表.typo已经是一个可以放在生产环境下使用的系统了,它就不需要外键,全部通过程序控制?或者说在Model里定义表关联时用dependent参数来保证外键? 我个人也不喜欢使用各种数据库自有的特性,但外键却是大多数数据库支持的东西,如果仅是因为测试而去除这个强大的功能,好像有点........ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-09-07
似乎Rails有意在回避这个问题。
他都没有内置对外键的自动支持。 |
|
返回顶楼 | |
发表时间:2007-09-07
外键的作用无外乎是保证数据完备,这些可以用程序做到。而且,使用数据库这些特性的话也有很大的开销,不完备检查呀之类的。就我目前的经验来看,没有必要使用外键。至少我到现在从来没有用过。
|
|
返回顶楼 | |
发表时间:2007-09-07
check out
http://dev.rubyonrails.org/ticket/2404 一个已经存在了2年的争论,rails team的人一直以为了保障unit test速度为理由,不肯打这个patch,简直是OOXX... 这个问题还不单单是外键问题,在一些牵涉到统计的测试用例里面,也会有前一个unit test fixuture没有清理干净,导致断言出错的情况。 偶建议用讨论里面有个rick发的patch,很简洁地解决了这个问题。 |
|
返回顶楼 | |
发表时间:2007-09-07
试试看
|
|
返回顶楼 | |