現在、Rspec テストから呼び出すと、次のように動作します。
def login_as(role)
@role = Role.create! :name => role
@virginia = User.create!(
:username => "Virginia",
:password => "password",
:password_confirmation => "password",
:email => "example@example.com")
@assignment = Assignment.create! user_id: @virginia.id, role_id: @role.id
visit login_path
fill_in "user_session_username", :with => @virginia.username
fill_in "user_session_password", :with => @virginia.password
click_on "submit_user_session"
end
インターフェースをすでにテストしたことを考えると、私の例の多くは、ユーザーが役割を持ってログインしている場合にのみ意味があるため、インターフェースに何百回もヒットしないようにすることで物事がスピードアップするかもしれないと考えました.だから、私はこれを試しました:
def login_as(role)
@role = Role.create! :name => role
@virginia = User.create!(
:username => "Virginia",
:password => "password",
:password_confirmation => "password",
:email => "example@example.com")
@assignment = Assignment.create! user_id: @virginia.id, role_id: @role.id
@user_session = UserSession.create! :username => @virginia.username, :password => @virginia.password
end
ただし、そのバージョンではログインしていません。何か考えはありますか?
明確にするために、declarative_authorization をテストする方法を尋ねているわけではありません。他の何かをテストしているときにすばやくログインする方法を尋ねています。たとえば、次のようlogin_as(role)
にテストproduct#delete
(管理者のみがアクセスできるアクション)を使用します。
login_as "admin"
visit product_path(@search)
click_link "delete_product"
page.current_path.should == products_path
page.should_not have_content "Retail Site Search"