Rails5 기능 요약
15414 단어 Rails
Model
Active Model
AttributeMethods 모듈
Callbacks 모듈
등록!
실행
건너뛰다
정지하다
관계의 CallBack
조건부 콜백.
CallBackClass
트레이딩 카드
before_validation
after_validation
before_save
around_save
before_create
around_create
after_create
after_save
before_validation
after_validation
before_save
around_save
before_update
around_update
after_update
after_save
before_destroy
around_destroy
after_destroy
after_initialize
after_find
after_touch
Conversion 모듈
Dirty 모듈
Validations 모듈
Ruby on Rails-View
View
Ruby on Rails-Controller
Controller
Ruby on Rails-Debugging
Debugging
Ruby on Rails-API
Rails API Server
Testing
기본적
모든 Rails 애플리케이션에는 세 가지 환경이 있습니다.
각 환경의 데이터베이스 설정config/database.yml
에서
기본적
모든 Rails 애플리케이션에는 세 가지 환경이 있습니다.
각 환경의 데이터베이스 설정
config/database.yml
에서Fixture
# Sample Fixture
david:
name: David Heinemeier Hansson
birthday: 1979-10-15
profession: Systems development
steve:
name: Steve Ross Kellock
birthday: 1974-09-27
profession: guy with keyboard
# belongs_to/has_many関連付けの場合
# fixtures/categories.ymlの内容:
about:
name: About
# fixtures/articles.ymlの内容
one:
title: Welcome to Rails!
body: Hello world!
category: about
# ERBを使用した場合
<% 1000.times do |n| %>
user_<%= n %>:
username: <%= "user#{n}" %>
email: <%= "user#{n}@example.com" %>
<% end %>
Model 유닛 테스트
test_helper.rb
에 추가된 방법은 모든 테스트에서 사용 가능db/schema.rb
또는 db/structure.sql
를 테스트 DBarticle_test.rb
# ActiveSupport::TestCaseのすべてのメソッドを利用できる
# ActiveSupport::TestCaseのスーパークラスはMinitest::Test
class ArticleTest < ActiveSupport::TestCase
end
Controller 기능 테스트
get 방법으로 전달된
get과post를 사용하면 사용할 수 있는 산열
사용 가능한 인스턴스 변수
@controller - 요청을 처리하는 컨트롤러
@request - 요청
@response - 응답
HTTP, 머리글 및 CGI 변수 설정하기
# HTTPヘッダーを設定する
@request.headers["Accept"] = "text/plain, text/html"
get :index
# CGI変数を設定する
@request.headers["HTTP_REFERER"] = "http://example.com/home"
post :create
템플릿 및 레이아웃이 올바른지 여부
assert_template
한 번 호출은 템플릿과 레이아웃을 동시에 테스트할 수 없음test "index should render correct template and layout" do
get :index
assert_template :index
assert_template layout: "layouts/application"
assert_template layout: "layouts/application", partial: "_form"
end
View 테스트
assert_select "ol" do |elements|
elements.each do |element|
assert_select element, "li", 4
end
end
assert_select "ol" do
assert_select "li", 8
end
Integration test
Setup 및 Teardown
Callbacks에 설치
# 各テストが実行される直前に呼び出される
def setup
@article = articles(:one)
end
# 各テストの実行直後に呼び出される
def teardown
# @article変数は実際にはテストの実行のたびに直前で初期化されるので
# ここで値をnilにする意味は実際にはないのですが、
# teardownメソッドの動作を理解いただくためにこのようにしています
@article = nil
end
Routing
test "should route to article" do
assert_routing '/articles/1', {controller: "articles", action: "show", id: "1"}
end
Mailer
Unit test
# inviteというアクションで知人に招待状を送信するUserMailerという名前のメイラー
require 'test_helper'
class UserMailerTest < ActionMailer::TestCase
test "invite" do
# メールを送信後キューに追加されるかどうかをテスト
email = UserMailer.create_invite('[email protected]',
'[email protected]', Time.now).deliver_now
assert_not ActionMailer::Base.deliveries.empty?
# 送信されたメールの本文が期待どおりの内容であるかどうかをテスト
assert_equal ['[email protected]'], email.from
assert_equal ['[email protected]'], email.to
assert_equal 'You have been invited by [email protected]', email.subject
assert_equal read_fixture('invite').join, email.body.to_s
end
end
Functional test
메일 배달 방법을 호출하여 그 결과가 배달 목록에 적절한지 확인하다
원하는 시간에 메일을 보낼지 여부
require 'test_helper'
class UserControllerTest < ActionController::TestCase
test "invite friend" do
assert_difference 'ActionMailer::Base.deliveries.size', +1 do
post :invite_friend, email: '[email protected]'
end
invite_email = ActionMailer::Base.deliveries.last
assert_equal "You have been invited by [email protected]", invite_email.subject
assert_equal '[email protected]', invite_email.to[0]
assert_match(/Hi [email protected]/, invite_email.body.to_s)
end
end
Helper
Assistant 메서드의 출력이 예상과 일치하는지 확인
class UserHelperTest < ActionView::TestCase
include UserHelper
test "should return the user name" do
# ...
end
end
Ruby on Rails-DeployCapistrano
Reference
이 문제에 관하여(Rails5 기능 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sunoko/items/bcae62c2a08af89b9468텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)