0

rspec テストを実行する前に実行する必要があるログイン関数の作成に苦労しています。

私が今持っているものは次のとおりです。

def login
  post "/session", { "session[username]" => "bjones" }
end

私のspec_helper.rbファイルで

次に、 requests ディレクトリにある spec.rb ファイルの 1 つに次のものがあります。

require 'spec_helper'

describe "Sessions" do
  describe "GET /dashboards" do

    login

    it "displays the dashboard" do
      get dashboard_path
      puts response.body
    end
  end
end

ただし、テストを実行しようとすると、次のようになります。

undefined method `post' for #<Class:0x4f08828> (NoMethodError)

私はレールにかなり慣れておらず、テストと rspec にまったく慣れていないので、ここに欠けている基本的なものがあるかもしれません。基本的に、私がやりたいことは、そのセッション変数を設定して、テストの実行時にログインできるようにすることだけです。それとも、そのログイン機能を別の場所に置く必要があるのでしょうか?

私はこの回答に出くわしましたが、これは一種の便利でしたが、rspec 向けではないため、そのようなヘルパー関数がどこに行くのか理解できません。

4

1 に答える 1

0

試す

let(:login) {
  post "/session", { "username" => "bjones" }.to_json
}

コントローラーが受け入れるコンテンツタイプに応じて、これを使用する.to_jsonかどうかを変更する必要がある場合があります。

于 2015-07-10T18:33:59.737 に答える