yılında sıfırdır. Bir yönetici iseniz sadece görünen bir silme bağlantım var. Silme bağlantısının yalnızca yöneticiler için gösterildiğini doğrulamak istediğim bir entegrasyon testine sahibim.Ruby on Rails Pundit en örnein Ben taşlar <code>pundit</code> ve <code>devise</code> kullanıyorum entegrasyon testi
response.body
...
class ActiveSupport::TestCase
...
def log_in_as(user, options = {})
password = options[:password] || 'password'
if integration_test?
post user_session_path, 'user[email]' => user.email, 'user[password]' => user.password
else
Devise::TestHelpers.sign_in user
end
end
private
# Returns true inside an integration test.
def integration_test?
defined?(post_via_redirect)
end
end
tamam görünüyor, ama aslında hiçbir silme bağlantı vardır:
test 'comment delete link shows when it should' do
log_in_as @admin
get movie_path(@movie)
assert_select 'a[href=?]', movie_comment_path(comments(:one), @movie.id)
end
test_helper.rb
şuna benzer Benim. Geliştirme sunucusunu çalıştırdığımda ve sayfayı kendim ziyaret ettiğimde bir tane var. Bunu, pundit'in nil
değeriyle aktarılmakta olduğu current_user
numaralı telefona daralttım. bir kapanış olarak belirtmek
class CommentPolicy
attr_reader :current_user, :comment
def initialize(current_user, model)
@current_user = current_user
@comment = model
end
def create?
if @current_user
@current_user.member? or @current_user.content_creator? or @current_user.moderator? or @current_user.admin?
end
end
def destroy?
if @current_user
@current_user == @comment.user or @current_user.moderator? or @current_user.admin?
end
end
end
, ben testlerin varsayılan türü için Raylar 4 için oluşturulacak dan bizim bildiğimiz Raylar 5 yerine denetleyici testlerinin entegrasyon testleri için tercih ettiğini duydum: Bu benim comment_policy.rb
olduğunu kontrolörlerimiz. Bu durumda kontrolör testlerinde çalışmak sign_in
/sign_out
yardımcıları yanı entegrasyon testlerinde çalışmak yapılmamışsa Rayları 5 kullanılırken, devise
kutudan daha kullanışlı bir çok bir halt olacaktı. Ama hala'un ne olduğunu bilmeden pundit
'un bu sorunu var mı? Denetleyici sınamalarında tüm bunların düzgün çalıştığını varsayalım, çünkü current_user
denetleyicilere dağıtıldı mı? Bu konuyla ilgili her türlü ışık çok beğeni topluyor, ancak bu kurulumla çalışmak için entegrasyon testlerini nasıl alacağımı gerçekten bilmek isterim çünkü şu an yazmak istediğim bir milyar var. Tamamen önemli, ancak politikada örnein kullanılarak çözülmesi gereken mu yoksa sadece politikada kullanıcıyı kullanabilirsiniz Değil o
size çok teşekkür CSRF şimdi en azından düzeltmek için biliyorum, benim için bir kök konudur :) benim konu testleri genelde işe eylemlere zaman zaman olur sadece bir hata ilgili olmamasına rağmen iyi. –