質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

6804閲覧

Controllerのテストで引数がうまく渡せない。RSpec

takeo7

総合スコア18

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

RSpec

RSpecはRuby用のBDD(behaviour-driven development)フレームワークです。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2016/09/07 11:45

###前提・実現したいこと
RSpecでControllerのテストケースを作成しているのですが、getでパラメータを引数渡すところがうまくできません。
どうすればeventModelのidをちゃんと渡してshow画面のレスポンスを得るテストケースを作成することができるのでしょうか?
ご教授お願いいたします!

###発生している問題・エラーメッセージ

Failure/Error: get :show, event: Event.new(:event_create) ArgumentError: When assigning attributes, you must pass a hash as an argument.

###該当のソースコード

Ruby

1#/events_controller_spec.rb 2 3 describe "Get #show" do 4 it "引数として渡されたEventModelのidに対応したshow画面が呼び出されること" do 5 get :show, event: attributes_for(:event_create) 6 expect(assigns[:event]).to render_template :show 7 end 8end

Ruby

1#/factories/events.rb 2 3FactoryGirl.define do 4 factory :event_create, class: Event do 5 title "title" 6 alternative_date1 Date.tomorrow 7 author_attributes { attributes_for(:user) } 8 end 9end 10 11#/factories/users.rb 12 13FactoryGirl.define do 14 factory :user, class: User do 15 name "name" 16 end 17end

Ruby

1#/events_controllerのshowメソッド 2#パスは/events/:id 3 4 def show 5 @event = Event.find(params[:id]) 6 end 7

###補足情報(言語/FW/ツール等のバージョンなど)
RSpec -v "3.5.2"

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

capybara-webkitなどを使っていますか?

こちらは,表示されたhtmlのDOM要素をセレクタなどで指定して確認することができます。
また,jsの実行後のdomの動きなどを確認したい場合は,seleniumや,poltergueistなどのヘッドレスブラウザを使って,実際のjsのeventを起こした時browserでの動作まで検証することができます。
これらは,ruby-gemにラッパーがあり,railで簡単に使えるようになっています。ただしこれらは,guiモジュールが必要であり,cui構成のlinuxイメージでは,依存モジュールをインストールしないと使えないことがあるので,気をつけてください。

表示されることを確認するだけであれば,これらを使わずとも

expect(assigns(:model)).to be_a_new(model) expect(response.content).to eq(200)

などで,view変数に渡されている値と,レスポンスコードを調べるだけで十分です。

投稿2016/09/27 02:07

編集2016/09/27 02:08
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問