Ruby on rails 4 清理rspec中的共享上下文变量
我正在使用Ruby on rails 4 清理rspec中的共享上下文变量,ruby-on-rails-4,rspec,rspec3,Ruby On Rails 4,Rspec,Rspec3,我正在使用RSpec.shared\u context设置所有描述块将使用的变量 像这样的 RSpec.shared_context "common" do let(:name) { #creates a database object } #more let statements end 现在我这样从描述块调用它 describe "common test" do include_context "common" #run few tests end 现在,在运行描述
RSpec.shared\u context
设置所有描述块将使用的变量
像这样的
RSpec.shared_context "common" do
let(:name) { #creates a database object }
#more let statements
end
现在我这样从描述块调用它
describe "common test" do
include_context "common"
#run few tests
end
现在,在运行描述块之后,我想清理它。如何回滚在共享上下文中创建的所有对象
我尝试在(:context)hook之后的中清理它,但是由于它是一个let语句,所以变量name
只允许在示例中使用
在运行descripe块中的测试后,是否有方法可以使用使用事务性固定装置来清理此问题。如果您只是正确设置测试套件以擦除数据库,则无需担心清理“let”
使用let定义已记忆的辅助对象方法。该值将被缓存
跨同一示例中的多个调用,但不跨示例
请注意,let是惰性计算的:直到第一个
调用它定义的方法的时间
几乎在每种情况下,您都希望自动和根据示例进行拆卸。这就是config.transactional\u fixtures
所做的-它在每个示例之后回滚数据库,这样您就有了一个新的记录,而不会遇到测试顺序问题。依赖每一个例子/上下文来明确地清理它本身只会导致失败