6

Rspec で「Post create」アクションをテストしようとしています。コードは次のとおりです。

   def valid_attributes
     {
    :zone => Flymgr::Zone.new(:countries => Flymgr::ZoneCountry.first,
        :name => 'USA',
        :description => 'USA Flight',
        :zipcodes => ''),
    :price => '100.00',
    :class => 'first',

     }
   end

   def valid_session
     {}
   end

   before(:each) do
       @request.env["devise.mapping"] = Devise.mappings[:admin]
       admin = FactoryGirl.create(:admin)
       sign_in admin                           
      end

describe "POST create" do
     describe "with valid params" do
       it "creates a new Flymgr::Rule" do
         expect {
           post :create, {:Flymgr_rule => valid_attributes}
         }.to change(Flymgr::Rule, :count).by(1)
       end

フォームの必須属性の 1 つは「ゾーン」です。これはドロップダウン ボックスであり、ドロップダウンのオプションは別のフォームで作成されます。Rspec を使用してフォーム エントリを作成する方法がわかりません。ご覧のとおり、別のコントローラーからメソッドを呼び出そうとしましたFlymgr::Zone.new。私はこれが機能しているとは思わず、私のテストを破っています。

誰でもこれを行うための最良の方法についてアドバイスできますか? おそらく、FactoryGirl を使用してゾーンとルール エントリを作成する必要がありますか?

4

2 に答える 2

3

ガイドが指摘しているように:

# Returns a hash of attributes that can be used to build a User instance
attrs = FactoryGirl.attributes_for(:user)
于 2013-11-22T17:56:28.613 に答える