Sometimes I see code like this:
describe ".active" do
let!(:active_accounts) { create_list(:active_account, 2) }
before { create_list(:pending_account, 3) }
it "returns only active accounts" do
expect(described_class.active).to match_array(active_accounts)
end
end
This spec is a bit misleading. Why we create some dependencies in let
and some in before
? What is hidden here? What is the purpose of those accounts created in before
? Usually the answer is this: we are not accessing inactive accounts in the test, so we don't need a variable, we just create them in before
.
To make test clear, it is better to always stick to the rule: use let
to create and specify dependencies, and before
- to bring the system under test to the desired state:
describe ".active" do
let!(:active_accounts) { create_list(:active_account, 2) }
let!(:pending_accounts) { create_list(:pending_account, 3) }
it "returns only active accounts" do
expect(described_class.active).to match_array(active_accounts)
end
end
Top comments (0)