2008-07-03
rspec行为驱动测试中model数据的设计策略
关键字: rspec 数据 fixtures
rspec行为驱动测试对数据fixtures使用了convention over configuration策略,一个文件名对应一个表,方便了数据测试前的导入,但是当测试用例涉及的表数量多、表与表之间关系复杂、级联关系比较深的情况下,会发生某些公用数据在多个测试用例中被多次使用的情况,如果测试用例间存在制约关系,比如某个测试用例A是要考察某记录类型的个数,另一个测试用例B对公用数据的使用(新增或者修改记录属性)过程中改变了A的结果,这会使测试用例A发生失败,如果关联度高和复杂的情况下,这种失败几乎是雪崩式的,会使得问题的纠正变得比较复杂,因此为了避免这种情况的发生,如何对测试数据进行设计其策略变得较为重要,对策就是尽可能的使数据不发生公用,某些数据公用不会造成测试用例间发生干涉,而有些数据会发生干涉,对这些会发生干涉的测试数据应该独立出来,即新建立数据,并且防止这些数据在其他测试用例中被其他开发人员修改(可以在yml文件中进行注释说明)
- 18:02
- 浏览 (68)
- 评论 (6)
- 分类: ruby & rails
- 进入论坛
- 相关推荐
评论
花花公子
2008-07-04
测试数据库所有表应该都使用innodb引擎,否则不支持回滚。
Quake Wang
2008-07-04
seemoon 写道
Quake Wang 写道
对于数据库做的任何操作在每个测试之间都会rollback,并不会出现你说的情况
你如果去做数据统计分析,在关联性紧密情况下就会出现了。这种情况不是transaction而引起的,而是设计测试数据阶段引起的。
这种情况你需要隔离这些test fixture,不要把所有的东西都放到一个文件里面。
举例来说:我们可以在spec/fixtures目录下面下新建立一个report目录,在下面放需要做统计或者大批量数据测试的fixture文件。然后在测试代码里面这样写:
describe User do self.fixture_path += "report" fixtures :users end
seemoon
2008-07-04
Quake Wang 写道
对于数据库做的任何操作在每个测试之间都会rollback,并不会出现你说的情况
你如果去做数据统计分析,在关联性紧密情况下就会出现了。这种情况不是transaction而引起的,而是设计测试数据阶段引起的。
seemoon
2008-07-04
chenk85 写道
Rspec其实反对Fixture构造测试数据,提倡自己mock数据。
那么你们是如何做mock的?
chenk85
2008-07-03
Rspec其实反对Fixture构造测试数据,提倡自己mock数据。
Quake Wang
2008-07-03
对于数据库做的任何操作在每个测试之间都会rollback,并不会出现你说的情况
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 4249 次
- 性别:

- 来自: 上海

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
单元测试势在必行的一个例 ...
open2ye 写道以上代码还有错误 save! 是抛错的.save 返回值才是 ...
-- by caryl -
开始攻克英语听力之旅(二 ...
fxbird 写道我怎么觉得这是一种隐性广告。我练听力目前用新概念3,听力其实就 ...
-- by Durian -
开始攻克英语听力之旅(二 ...
回复asd: 很抱歉,在我写的博客上, http://seemoon.javae ...
-- by seemoon -
开始攻克英语听力之旅(二 ...
老大,你的一呢,能不能给个link学习下,我往后翻了几页没有找到。
-- by asd -
开始攻克英语听力之旅(二 ...
我怎么觉得这是一种隐性广告。我练听力目前用新概念3,听力其实就是看词汇量,词汇量 ...
-- by fxbird






评论排行榜