我想为我的rspec测试添加自定义标记。例如:
before(:suite) do
if (it.tags[:transactional] == true)
else
end
end
自定义标记为 transactional:false 。
然后在我的database_cleaner_helper.rb中,我可以写下面的内容。
insert into Dimension_DDTU (BI_Id, BI_Name, DBI_Id, dBI_Name)
select
ds.BI_ID,
dvo.name,
ds.BI_Id + '' + dm.DBI_Id as DBI_Id,
dso.dname
from
Census.dbo.SMaster sm
full outer join
C.dbo.dis dso on dso.did = sm.did
full outer join
C.dbo.Div dvo on dvo.dsid = dso.diid
full outer join
b.dbo.DMap ds on ds.DOp_Id = dso.did
full outer join
b.dbo.DsMap dm on dm.DOp_Id = sm.did
你能举个例子吗?
答案 0 :(得分:0)
正确的语法就像
before(:suite, transactional: true) do
# do something
end
请参阅https://relishapp.com/rspec/rspec-core/docs/hooks/filters
答案 1 :(得分:0)
我想出了我自己的解决方案,如下所示。由于我在运行任何测试之前使用数据库清理程序来截断数据库,因此rspec元数据仅适用于每个测试;我必须使用环境变量来控制它。结果如下所示。
database_cleaner = ENV['DATABASE_CLEANER']
RSpec.configure do |config|
config.before(:suite) do
if database_cleaner.nil? || database_cleaner == 'true'
DatabaseCleaner.clean_with(:truncation)
Rails.application.load_seed
end
end
# More code here
end
另外要指出这一点,你不能做config.before(:suite, transactional: true)
。从rspec-rails 3.6.0