【发布时间】:2018-01-15 09:01:53
【问题描述】:
所以...
我有一个 RSpec 测试问题,我正在尝试配置特定设置(不创建新数据,但修改实例数据),并且在运行测试用例后,数据不会恢复。请看下面一个简单的例子,注意 foo 是一个 ActiveRecord 对象...... 需要'rails_helper'
RSpec.describe My::Code do
before(:context) do
@foo = FactoryGirl.create(:foo)
end
after(:context) do
@foo.destroy!
end
let(:foo) { @foo.clone }
describe 'something' do
# Imagine `something` just returns foo.bar, which is an over-
# simplification, but gives you an idea of the problem I am seeing
subject { My::Code.something(foo) }
context 'when foo has different property value' do
before(:each) do
foo.bar = false
end
it { is_expected_to be(false) }
end
context 'when foo has original property value' do
# This will fail, as foo's bar property is still false
it { is_expected_to be(true) }
end
end
...这是我的情况的要点,我无法弄清楚为什么 RSpec 没有回滚。我的一些rails_helper 文件...
config.use_transactional_fixtures = true
...
config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end
...任何见解都非常感谢。
【问题讨论】:
-
如果我将 let 绑定更改为
let(:foo) { @foo.reload.clone },一切都会按预期进行,但似乎我不需要这个。
标签: ruby-on-rails ruby activerecord rspec