当使用ActiveRecord在Ruby on Rails 2.3中运行RSpec测试时,数据库在每个示例(it
块)之后回滚到before :all
块之后的状态。在Ruby on Rails中防止规范中的数据库回滚?
但是,我想规定一个对象的生命周期,这意味着要逐个检查一些示例,更改状态并测试后置条件。回滚行为是不可能的。
所以澄清:
describe MyModel
before :all { @thing = MyModel.create }
it "should be settable" do
lambda { @thing.a_number = 42 }.should_not raise_exception
end
it "should remember things" do
@thing.a_number.should == 42
# this fails because the database was rolled back ☹
end
end
是否有某种方式来坚持实例所做的更改?
嗯,谢谢我的猜测。 TBH,我根本不喜欢Cucumber(它打破了DSL最终仍然是一种编程语言的基本原则,不应该试图看起来太“自然”),只是想尽量避免使用它。 – Nicos
是的,我和黄瓜有类似的问题,因为不管语言看起来如何“自然”,计算机在解释过程中仍然过于具体以真正知道用户*意味着什么*在非常严格的词汇表之外当然,通过步骤定义来定义)。但是,Cucumber的目标之一是也允许非程序员理解Cucumber测试正在做什么,因此可以根据用户体验和做什么来选择它们,而不是完成它们的底层系统。 – jefflunt
他们对COBOL说了同样的话,最终只有受过良好训练的人才能使用COBOL。在这一点上,我真的在做“扩展单元测试”和布局原子商业逻辑,而不是集成,所以测试框架的范围是模棱两可的,但是对单元测试高度倾斜,所以我宁愿围绕回滚工作来付出代价运行时间更长的规格。 – Nicos