0

私のテストのほとんどは機能していますが、何らかの理由で FactoryGirl.build ... should_not be_valid がこのステートメントの最後で機能していません

describe "exceed the maximum number of subscriptions" do 
  @user = FactoryGirl.create(:user)
  loop_count = GlobalVar::MAX_SUBSCRIPTIONS
  loop_count.times do 
    @topic = FactoryGirl.create(:topic)
    @subscription = FactoryGirl.create(:subscription, topic: @topic, user: @user)
  end
  @topic = FactoryGirl.create(:topic)
  FactoryGirl.build(:subscription, topic: @topic, user: @user).should_not be_valid
end

同じ仕様では、これは正常に合格します。

it "has a maximum length bio" do 
    FactoryGirl.build(:user, bio: "a"*251).should_not be_valid
end

これが私が得ているエラーの始まりです:

(druby://192.168.1.118:53053) C:/Sites/mavens/spec/models/user_spec.rb:42:in `block (3 levels) in <top (required)>': undefined local variable or method `be_valid' for #<Class:0x7e49290> (NameError)
    from (druby://192.168.1.118:53053) C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/rspec-core-2.11.1/lib/rspec/core/example_group.rb:238:in `module_eval'

テストにはSporkとGuardを使用しています。実行ごとに、spec_helper に FactoryGirl をリロードしました。スポークを数回再起動しましたが、再起動しても機能しません。追加のコードが役立つかどうか教えてください。いつものように、助けてくれてありがとう!!

4

1 に答える 1

1

itブロック内にテストを配置する必要があります。

describe "exceed the maximum number of subscriptions" do 
  it do
    user = FactoryGirl.build(:user)
    GlobalVar::MAX_SUBSCRIPTIONS.times do
      topic = FactoryGirl.build(:topic)
      FactoryGirl.build(:subscription, topic: topic, user: user)
    end
    topic = FactoryGirl.build(:topic)
    FactoryGirl.build(:subscription, topic: topic, user: user).should_not be_valid
  end
end

これは、RSpec が DSL のコンテキストを処理する方法によるものです。

于 2013-06-16T15:59:48.440 に答える