1

「エキスパート」ユーザーは記事を作成でき、「基本」ユーザーは作成できないことを確認するためのテストを書きたいと思います。たとえば、基本ユーザーはここにはアクセスできません: "http://0.0.0.0:3000/articles/new"。以下は、私の記事コントローラーの短縮版で、その後に記事のテストが続きます。コントローラーは機能しますが、テストでそれを証明したいと思います。「コードはここに入る」と書かれている場所に何を置くべきかわかりません。ありがとう。

記事_コントローラ:

class ArticlesController < ApplicationController
  load_and_authorize_resource

      # GET /articles/new
      # GET /articles/new.json
      def new
        puts "in articles new"
        @article = Article.new

        respond_to do |format|
          format.html # new.html.erb
          format.json { render json: @article }
        end
      end
    end

article_controller_spec:

    describe ArticlesController do

  before (:each) do
    @user = FactoryGirl.create(:user)
    @user.role = "basic"
    sign_in @user
  end

  describe "create article" do
    it "should not create new article" do
      #code goes here
    end
  end
end
4

3 に答える 3

0

起こるべきではないことをテストする代わりに、起こるべきことのより単純なテストを検討してください。

it "should return 401" do
  get :new
  expect(response.status).to eq(401)
end
于 2014-12-02T21:20:58.350 に答える
0

スペックファイルで、次のようにすることができます:

describe "create article" do
  it "should not create new article" do
    get :new
    expect(response).not_to render_template("new")
  end
end

cancan のドキュメントで、https://github.com/ryanb/cancan/wiki/Testing-Abilitiesを参照してください。詳細を取得できます。

于 2013-08-20T04:41:23.147 に答える