Tüm yönetici denetleyicileri için denetleyici denetimini (projemin Admin
ad alanı altındaki tüm denetleyiciler) gerçekleştiren paylaşılan bir örnek grubu oluşturarak özelliklerimi DRY tutmaya çalışıyorum. Bunun nasıl yapılacağını anlamaya çalışıyorum, çünkü paylaşılan örnek hangi eylemlerin ve parametrelerin kullanılacağı hakkında bilgi vermelidir. Bir test başarısız olursa (yani, test ettiği eylemin detaylarını da dahil ederek) ideal olarak anlamlı hatalar sunmalıdır.RSpec 2'de dinamik olarak paylaşılan örnekler oluşturuyor musunuz?
require 'spec_helper'
shared_examples "an admin controller" do
before(:each) do
@non_admin = User.make
@admin = User.make(:admin)
end
context "as an admin user" do
@actions.each do |action, params|
specify "I should be able to access ##{action.last} via #{action.first}" do
self.active_user = @admin
send(action.first, action.last, params)
response.status.should be_ok
end
end
end
context "as a regular user" do
@actions.each do |action, params|
specify "I should be denied access to ##{action.last}" do
self.active_user = @non_admin
send(action.first, action.last, params)
response.status.should be 403
end
end
end
end
describe Admin::UserNotesController do
@user = User.make
@actions = { [:get, :index] => { :user_id => @user.id },
[:get, :new] => { :user_id => @user.id },
[:post, :create] => { :user_id => @user.id } }
it_behaves_like "an admin controller"
end
@actions
paylaşılan örnek grubuna görünmüyorsa bariz nedenle bu hataları. let
kullanırsanız, bu yalnızca describe
bloğu bağlamında değil, bir örnek bağlamında kullanılabilir. Herhangi bir fikir?
için http://relishapp.com/rspec/rspec-core/v/2-6/dir/example-groups/shared-examples bakınız, teşekkür ederim! Kod silme gibi bir şey yok :) – d11wtq