このスレッドRails Tutorial: RSpec test decouplingで Nick Rutten と同じ問題がありました。問題はFactoryGirl.create()
データベースへの保存であると思われ、@prusswan のおかげで修正しました。puts
ただし、これらが異なることを示さない理由がわかりませんUser.count
。
これは私が興味を持っているスニペットです:
describe "with valid information" do
puts "Number of users pre-Factory:" + User.count.to_s
let(:user){FactoryGirl.create(:user)}
puts "Number of users post-Factory:" + User.count.to_s
(...)
end
私は得る:
Number of users pre-Factory:0
Number of users post-Factory:0
しかし、代わりに取得するべきではありませんか?:
Number of users pre-Factory:0
Number of users post-Factory:1
ところで、ファクトリは次のように定義されています (ただし、現在はあまり関係ありません)。
FactoryGirl.define do
factory :user do
name "Example User"
email "user@example.com"
password "foobar"
password_confirmation "foobar"
end
end
カウンターが増えない理由を理解しようとして立ち往生していますが、最初から増えていた問題ではありませんでしたか? ありがとうございました
@derekyau の提案を使用して編集します。
今、私はこの順序で持っています:
it "print counter before let"
puts "Number of users:" + User.count.to_s
end
let(:user){FactoryGirl.create(:user)}
it "print counter after let"
puts "Number of users:" + User.count.to_s
end
ただし、今は両方の値 1 を取得します。
Number of users:1
Number of users:1
クローズしますが、まだありません。
編集 2
ここで @Peter Alfvin が説明したように:指定された RSpec 記述ブロック内で、let、before、および it ステートメントの順序は重要ですか? . 、 、の順序はlet
、コードに関係なくほぼ確立されています。それは、@ derekyauの説明とともに、質問を閉じます.before
it