私は非常によく似た設定をしています。以下は、このようなものをテストするために現在使用しているコードです。describe
私が入れた各s で:
it_should_behave_like "login-required object"
def attempt_access; do_post; end
必要なのはログインだけの場合、または
it_should_behave_like "ownership-required object"
def login_as_object_owner; login_as @product.user; end
def attempt_access; do_put; end
def successful_ownership_access
response.should redirect_to(product_url(@product))
end
所有権が必要な場合。明らかに、ヘルパー メソッドはターンごとに (ほとんど) 変化しませんが、これでほとんどの作業が行われます。これは私のspec_helper.rbにあります
shared_examples_for "login-required object" do
it "should not be able to access this without logging in" do
attempt_access
response.should_not be_success
respond_to do |format|
format.html { redirect_to(login_url) }
format.xml { response.status_code.should == 401 }
end
end
end
shared_examples_for "ownership-required object" do
it_should_behave_like "login-required object"
it "should not be able to access this without owning it" do
attempt_access
response.should_not be_success
respond_to do |format|
format.html { response.should be_redirect }
format.xml { response.status_code.should == 401 }
end
end
it "should be able to access this if you own it" do
login_as_object_owner
attempt_access
if respond_to?(:successful_ownership_access)
successful_ownership_access
else
response.should be_success
end
end
end