如何摆脱 let using before
How to get rid of let using before
我想摆脱 let!
- 为此,我想将其移至 before
方法(必须先创建它)。
describe AdminPanelLogRemoverWorker do
include_context 'with admin_user form'
subject(:delete_worker) { described_class.new.perform }
let!(:admin_panel_log1) do
create :admin_panel_log,
new_data: admin_user_form,
created_at: created_at
end
let!(:admin_panel_log2) do
create :admin_panel_log,
new_data: admin_user_form,
created_at: 2.days.ago
end
let(:created_at) { 2.years.ago }
context 'when admin log is outdated' do
it 'delete only outdated data' do
expect { delete_worker }.to change(AdminPanelLog, :count).by(-1)
end
end
我想做这样的事情
before { admin_panel_log1 }
before { admin_panel_log2 }
但是如何一行完成?
您可能希望将代码更改为:
describe AdminPanelLogRemoverWorker do
include_context 'with admin_user form'
subject(:delete_worker) { described_class.new.perform }
let(:admin_panel_log1) {
create :admin_panel_log, new_data: admin_user_form, created_at: 2.years.ago
}
let(:admin_panel_log2) {
create :admin_panel_log, new_data: admin_user_form, created_at: 2.days.ago
}
before do
admin_panel_log1
admin_panel_log2
end
context 'when admin log is outdated' do
it 'delete only outdated data' do
expect { delete_worker }.to change(AdminPanelLog, :count).by(-1)
end
end
end
我想摆脱 let!
- 为此,我想将其移至 before
方法(必须先创建它)。
describe AdminPanelLogRemoverWorker do
include_context 'with admin_user form'
subject(:delete_worker) { described_class.new.perform }
let!(:admin_panel_log1) do
create :admin_panel_log,
new_data: admin_user_form,
created_at: created_at
end
let!(:admin_panel_log2) do
create :admin_panel_log,
new_data: admin_user_form,
created_at: 2.days.ago
end
let(:created_at) { 2.years.ago }
context 'when admin log is outdated' do
it 'delete only outdated data' do
expect { delete_worker }.to change(AdminPanelLog, :count).by(-1)
end
end
我想做这样的事情
before { admin_panel_log1 }
before { admin_panel_log2 }
但是如何一行完成?
您可能希望将代码更改为:
describe AdminPanelLogRemoverWorker do
include_context 'with admin_user form'
subject(:delete_worker) { described_class.new.perform }
let(:admin_panel_log1) {
create :admin_panel_log, new_data: admin_user_form, created_at: 2.years.ago
}
let(:admin_panel_log2) {
create :admin_panel_log, new_data: admin_user_form, created_at: 2.days.ago
}
before do
admin_panel_log1
admin_panel_log2
end
context 'when admin log is outdated' do
it 'delete only outdated data' do
expect { delete_worker }.to change(AdminPanelLog, :count).by(-1)
end
end
end