create, build でテストできることの違い
「下書きが保存可能であること」を確認しようと思い、
下記のコードを記述。
context "下書きのとき" do
let(:draft) { create(:article, status: 0) }
fit "下書き記事を保存できる" do
expect(draft).to be_valid
end
end
しかし、これでは、
createした後に、createできるか確認。
という順になってしまうため、保存できるかの確認にはならない。(createは作ってすぐに「保存してしまっている」から。)
なので、create -> build に変えるのが正しい。
context "下書きのとき" do
let(:draft) { build(:article, status: 0) }
fit "下書き記事を保存できる" do
expect(draft).to be_valid
end
end
これなら、draftは保存可能なデータなのか?
というテストになる。