Я создал сайт просмотра фильмов, который позволяет зарегистрированному пользователю добавлять, редактировать и удалять фильм, а также оставлять обзоры для каждого фильма. Я также внедрил почтовую программу для моей контактной формы, которая отправляет «фальшивый адрес электронной почты» (отображается только на консоли).Проверка почты/контакта
Это мой первый опыт работы с Ruby, поэтому я не уверен, как тестировать мой контроллер и метод для контактов. Любые формы совета будут высоко оценены.
contacts_controller.rb:
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(params[:contact])
@contact.request = request
if @contact.deliver
flash.now[:notice] = 'Thank you for your message. We will contact you soon!'
else
flash.now[:error] = 'Cannot send message.'
render :new
end
end
end
contact.rb:
class Contact < MailForm::Base
attribute :name, :validate => true
attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.
attribute :message
attribute :nickname, :captcha => true
# Declare the e-mail headers. It accepts anything the mail method
# in ActionMailer accepts.
def headers
{
:subject => "My Contact Form",
:to => "[email protected]",
:from => %("#{name}" <#{email}>)
}
end
end
маршруты:
contacts GET /contacts(.:format) contacts#new
POST /contacts(.:format) contacts#create
new_contact GET /contacts/new(.:format) contacts#new
Мои испытания до сих пор:
require 'test_helper'
class ContactsControllerTest < ActionController::TestCase
include Devise::Test::ControllerHelpers
test "should get contact" do
get :new
assert_response :success
end
end
Спасибо за обмен ссылку. Используя эту ссылку, я пытался понять, но я до сих пор не знаю, как применять эти принципы для моего тестирования. – sar
Посмотрите на '10.3 Functional Testing', чтобы протестировать ваш контроллер. Пожалуйста, дайте мне знать, если у вас есть вопрос. – JackBites
Основываясь на 10.3 я придумал следующий тест: тест "отправить электронную почту" сделать assert_difference 'ActionMailer :: Base.deliveries.size', +1 сделать пост send_email_url, Params: {эл.адрес: «Информация @ MyMovies .com»} конец send_email = ActionMailer :: Base.deliveries.last конец Не могли бы вы, пожалуйста, руководство меня, если я на правильном пути, и здесь я совершенно запутался. – sar