Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 清理rspec中的共享上下文变量_Ruby On Rails 4_Rspec_Rspec3 - Fatal编程技术网

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
所做的-它在每个示例之后回滚数据库,这样您就有了一个新的记录,而不会遇到测试顺序问题。依赖每一个例子/上下文来明确地清理它本身只会导致失败