render düzeni test.
aşağıdaki mailler sınıf ve metot Verilen
,
class Notifier < ActionMailer::Base
def password_reset_instructions(user)
@user = user
@reset_password_link = ...
mail(to: ..., from: ...., subject: "Password Reset Instructions") do |format|
format.html {render layout: 'my_layout'}
format.text
end
end
end
şifre sıfırlama e-my_layout.html.erb
düzeni kullanarak işlenecek.
Bu mailler yöntemi, bir UsersController
yöntemde çağrılan olasıdır örn:
class UsersController < ApplicationController
def forgot_password
user = ...
Notifier.password_reset_instructions(user).deliver_now
end
end
kullanılan düzen doğrulamayı tercih users_controller#forgot_password
için aşağıdaki kontrolör testinde assert_template layout: "my_layout"
deyimi:
class UsersControllerTest < ActionController::TestCase
test "forgot password" do
assert_difference 'ActionMailer::Base.deliveries.size', +1 do
post :forgot_password, email: @user.email
end
assert_response :redirect
assert_template layout: "my_layout"
assert_template "password_reset_instructions"
password_reset_email = ActionMailer::Base.deliveries.last
assert_equal "Password Reset Instructions", password_reset_email.subject
end
end
günlüğünden ilgili bölümleri:
Started POST "https://stackoverflow.com/users/forgot_password"
Processing by UsersController#forgot_password as HTML
...
Rendered notifier/password_reset_instructions.html.erb within layouts/my_layout (1.1ms)
Referanslar:
- Action Mailer Basics
- Testing Your Mailers - Functional Testing
- assert_template method
Selam Luke. Ne açıkça belirlenen bir düzen ile şablonu oluşturur ve (şu anda belirtilen her türlü düzen ile) üretilir ne metin veya HTML karşılaştırır bir iddia hakkında? Benim düşüncem, eğer birisi maillerdeki düzen değerini değiştirirse, test başarısız olurdu. Bunu denemek ama bu testi bakarak bu fikri vardı yoktu: https://github.com/rails/rails/blob/master/actionmailer/test/base_test.rb#L545 söyleniyor, orada gibi görünüyor teftiş edebileceğiniz bir yere gömülmüş yerleşim adıyla bir örnek değişken olmalıdır (veya bir yama olarak ekleyiniz). –