5

Railsコントローラーの仕様でいくつかの一般的なコードを再利用しようとしています。管理者ユーザーと通常のユーザーで異なるコンテキストがあります。ただし、動作の多くは特定のアクションで同じであるため、その一般的な動作をヘルパー関数に引き出してみました。

describe SomeController do
    def common_get_new
       # common stuff
    end 

    context "regular users" do
        describe "GET new" do
            common_get_new
        end
    end

    context "admin users" do
        describe "GET new" do
            common_get_new
        end
    end
end

これは私にエラーを与えます:

未定義のローカル変数またはメソッド`common_get_new '

私は何が間違っているのですか?

4

2 に答える 2

14

共有例を使用してみましたか?

describe SomeController do
  shared_examples_for "common_get_new" do
    # common stuff
  end 

  context "regular users" do
    describe "GET new" do
      it_should_behave_like "common_get_new"
    end
  end

  context "admin users" do
    describe "GET new" do
      it_should_behave_like "common_get_new"
    end
  end
end

質問のメソッドの内容に応じてcommon_get_new、エラーを簡単に取り除くために、メソッドをspec / support / Utilities.rbに配置するか、@ Chris Healdが提案したように実行して、上部にメソッドを定義します。ファイル。

于 2012-12-28T04:06:52.893 に答える
0

より深いコンテキストが同じセットアップコードを共有できるように、コンテキストを再配置してみてください。

describe SomeController do
  describe "GET new" do
    before do
       # common stuff
    end

    context "regular users" do
    end

    context "admin users" do
    end
  end
end
于 2012-12-28T00:53:13.400 に答える