2

このスレッド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の説明とともに、質問を閉じます.beforeit

4

1 に答える 1