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

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

ただいまの
回答率

90.83%

  • Ruby on Rails 5

    961questions

  • RSpec

    167questions

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

rspecでrender_viewsするとエラーが発生してしまう。

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 166

sbkenjiakg

score 12

rspecでコントローラーのテストを書いています。
検索機能つきの一覧表示画面のテストでrender_viewsを使って正しく表示されることをテストしたいです。
"条件指定のパラメータがある時"内でバリデーションエラーの文言がviewに含まれているかを確認したいです。
またcontroller内で入力チェックを行なっており、問題があった場合は@error配列にエラーメッセージを入れておくことでバリデーションを実装しているのでそれを確認できてもいいかとおもています。

テストコードを書くのが初めてでほとんど分かっていない状態なので、質問の仕方が正しいかどうかもわからないのですがよろしくお願いします。

コントローラーのindex

def index     
  @errors = [] 
  param_check
  if @errors.any?
    category_list
    @info = search_info
    render :index
  end
  @info = search_info
end
テストコード

require 'rails_helper'
RSpec.describe InfoController, type: :controller do

  describe 'Get #index' do
    render_views
    before do
      get :index
    end

    context "デフォルト(条件指定のパラメータがない場合)" do
      it "正常に動作しているか" do
        expect(response.status).to eq(200)
      end
      it "returns http success" do
        expect(response).to have_http_status(:success)
      end
      it "正しくレンダリングされているか" do
        expect(response).to render_template(:index)
      end
      it "正しく表示されているか" do
        expect(response).to render_template(:index)
      end
    end
    context "条件指定のパラメータがある場合" do
      it "正常な値" do
        get :index, params: {id: 1 ,title: "test" ,date: "2017/12/12"}

      end
      it "不正な値" do
        get :index, params: { id: "aaa" }

      end
    end
  end

end
発生するエラー

InfoController Get #index デフォルト(条件指定のパラメータがない場合) 正しくレンダリングされているか
     Failure/Error: get :index

     ActionView::Template::Error:
       File to import not found or unreadable: ../bootstrap/dist/css/bootstrap.min.
     # (sass):17
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/import_node.rb:67:in `rescue in import'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/import_node.rb:45:in `import'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/import_node.rb:28:in `imported_file'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/import_node.rb:37:in `css_import?'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/perform.rb:314:in `visit_import'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/base.rb:36:in `visit'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/perform.rb:162:in `block in visit'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/stack.rb:79:in `block in with_base'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/stack.rb:135:in `with_frame'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/stack.rb:79:in `with_base'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/perform.rb:162:in `visit'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/base.rb:52:in `block in visit_children'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/base.rb:52:in `map'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/base.rb:52:in `visit_children'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/perform.rb:171:in `block in visit_children'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/perform.rb:183:in `with_environment'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/perform.rb:170:in `visit_children'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/base.rb:36:in `block in visit'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/perform.rb:190:in `visit_root'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/base.rb:36:in `visit'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/perform.rb:161:in `visit'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/visitors/perform.rb:10:in `visit'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/root_node.rb:36:in `css_tree'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/root_node.rb:20:in `render'
     # /usr/local/bundle/gems/sass-3.5.3/lib/sass/engine.rb:290:in `render'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/sass_compressor.rb:48:in `call'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/sass_compressor.rb:28:in `call'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:75:in `call_processor'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:57:in `block in call_processors'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `reverse_each'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/processor_utils.rb:56:in `call_processors'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/loader.rb:134:in `load_from_unloaded'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/loader.rb:60:in `block in load'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/loader.rb:317:in `fetch_asset_from_dependency_cache'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/loader.rb:44:in `load'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:20:in `block in initialize'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/cached_environment.rb:47:in `load'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/base.rb:66:in `find_asset'
     # /usr/local/bundle/gems/sprockets-3.7.1/lib/sprockets/base.rb:92:in `[]'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:355:in `find_asset'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:336:in `digest_path'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:325:in `asset_path'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:102:in `block in resolve_asset_path'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:242:in `block in resolve_asset'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:241:in `each'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:241:in `detect'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:241:in `resolve_asset'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:101:in `resolve_asset_path'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:79:in `compute_asset_path'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:185:in `block in stylesheet_link_tag'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:183:in `map'
     # /usr/local/bundle/gems/sprockets-rails-3.2.1/lib/sprockets/rails/helper.rb:183:in `stylesheet_link_tag'
     # ./admin/app/views/layouts/admin/application.html.erb:5:in `_admin_app_views_layouts_admin_application_html_erb___1010548273086144572_41218100'
     # /usr/local/bundle/gems/yuba-0.0.2/lib/yuba/rendering.rb:6:in `render'
     # /usr/local/bundle/gems/rails-controller-testing-1.0.2/lib/rails/controller/testing/template_assertions.rb:61:in `process'
     # /usr/local/bundle/gems/rails-controller-testing-1.0.2/lib/rails/controller/testing/integration.rb:12:in `block (2 levels) in <module:Integration>'
     # ./spec/controllers/notifications_controller_spec.rb:8:in `block (3 levels) in <top (required)>'
     # ------------------
     # --- Caused by: ---
     # Sass::SyntaxError:
     #   File to import not found or unreadable: ../bootstrap/dist/css/bootstrap.min.
     #   /usr/local/bundle/gems/sass-3.5.3/lib/sass/tree/import_node.rb:65:in `import'
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

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

  • ただいまの回答率 90.83%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby on Rails 5

    961questions

  • RSpec

    167questions

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