ã¯ããã«
RSpecã§ãã¹ãã³ãŒããæžããïŒïŒèšäºç®ã§ãïŒ
â ã®æçš¿ã¯ãã¡ãâ
ãã¹ãã³ãŒãæžãæ¹
Userã¢ãã«ã«ã¯nameã«ã©ã ãšemailã«ã©ã ããããšããŸãã
require 'rails_helper'
RSpec.describe User, type: :model do
describe 'ãŠãŒã¶ãŒæ°èŠç»é²' do
context 'ç»é²ãã§ãããšã' do
ãããit 'å
šãŠã®é
ç®ãæ£ããå
¥åãããŠããæ' do
ã#ãã®åŠçãèšè¿°
ãããend
ããend
context 'ç»é²ãã§ããªããšã' do
ãããit 'nameã空ã§ã¯ç»é²ã§ããªã' do
# nameã空ã§ã¯ç»é²ã§ããªããã¹ãã³ãŒããèšè¿°
ãend
ãit 'emailã空ã§ã¯ç»é²ã§ããªã' do
# emailã空ã§ã¯ç»é²ã§ããªããã¹ãã³ãŒããèšè¿°
ãendã
ããend
end
end
ãã®èšè¿°ã§ååŠè ãïŒãšãªãéšåã1ã€ã¥ã€ç¢ºèªããŠãããŸãã
Rspecã§æåã«èŠããåºæ¬çãªã¡ãœããç
describe
describeãšã¯ããã¹ãã³ãŒãã®ã°ã«ãŒãåããè¡ãã¡ãœããã§ãã
ãã©ã®æ©èœã«å¯ŸããŠã®ãã¹ããè¡ããããdescribeã§ã°ã«ãŒãåããããã®äžã«åãã¹ãã³ãŒããèšè¿°ããŸãã
äžèšã®å Žåã ãšãŠãŒã¶ãŒæ°èŠç»é²
ã®éšåã«ããããŸãã
describe
ã«ã€ã¥ãdo~end
ã®éã«ãããã«describeã¡ãœãããèšè¿°ããããšã§ãå
¥ãåæ§é
ããšãããšãã§ããŸãã
context
ç¹å®ã®æ¡ä»¶ãåãããå Žåã«çšããŸããcontextã¯ã©ã®ãããªãç¶æ³ãã確èªãããã®ããæžããŸãã
äžèšã®å Žåã ãšç»é²ãã§ãããšã
ãšç»é²ãã§ããªããšã
ã®éšåã«ããããŸãã
contextãŸã§ã®èšè¿°ã§ãŠãŒã¶ãŒæ°èŠç»é²ã§ç»é²ã§ãããšããšç»é²ã§ããªããšãããã¹ãããããšãåãããŸãã
it
describeã¡ãœããåæ§ã«ãã°ã«ãŒãåããè¡ãã¡ãœããã§ãã
itã®å Žåã¯ãã詳现ã«ããdescribeã¡ãœããã«èšè¿°ããæ©èœã«ãããŠãã©ã®ãããªç¶æ³ã®ãã¹ããè¡ããããæèšããŸãã
contextãããããã«è©³çŽ°ãªãã®ãèšè¿°ããŸãã
äžèšã®å Žåã ãšå
šãŠã®é
ç®ãæ£ããå
¥åãããŠããæ
ãnameã空ã§ã¯ç»é²ã§ããªã
ãemailã空ã§ã¯ç»é²ã§ããªã
ã®éšåã«ããããŸãã
ããã§äœããã¹ãããŠãããäžç®çç¶ã§ããïŒ
example
exampleãšã¯ãitã§åããã°ã«ãŒãã®ããšãæããŸãã
ããã§ã¯å®éã«ãã¹ããå®è£ ããŠã¿ãŸãããïŒ
ãã¹ãã³ãŒãã®å®è£
require 'rails_helper'
RSpec.describe User, type: :model do
describe 'ãŠãŒã¶ãŒæ°èŠç»é²' do
before do
@user=User.new(name:"honda-gentuki",email:"abc@abc")
end
context 'ç»é²ãã§ãããšã' do
it 'å
šãŠã®é
ç®ãæ£ããå
¥åãããŠããæ' do
expect(@user).to be_valid
ããã end
ãã end
context 'ç»é²ãã§ããªããšã' do
ãã it 'nameã空ã§ã¯ç»é²ã§ããªã' do
@user.name=""
@uer.valid?
expect(@user.errors.full_messages).to include("ååãå
¥åããŠãã ãã")
ã end
ãit 'emailã空ã§ã¯ç»é²ã§ããªã' do
@user.email=""
@uer.valid?
expect(@user.errors.full_messages).to include("ã¡ãŒã«ã¢ãã¬ã¹ãå
¥åããŠãã ãã")
ãendã
end
end
äžèšèšè¿°ã®ç¢ºèªãã¹ãç¹
before do~end
ããã¯ã³ã³ãããŒã©ãŒã§ããbefore_actionãšåæ§ã§ãïŒ
ãã£ãšç°¡åã«èšè¿°ã§ããæ¹æ³ãããã®ã§ãé»æã®èšè¿°ã®äžèº«ã¯æµãèªã¿ã§çµæ§ã§ãïŒ
expect
æ€èšŒã§åŸãããæåãæ³å®éããªã®ãã確èªããæ§æã®ããšã§ãã
expect().to matcher()
ãšããé圢ãããšã«ã«ããã¹ãã®å
容ã«å¿ããŠåŒæ°ãmatcherãéæå€ããŠèšè¿°ããŸããincludeãeqãªã©ãããã«ããããŸããincludeã¯åŸã§èª¬æããŸãã
matcher
ã¯ããexpectã®åŒæ°ããšãæ³å®ããæåããäžèŽããŠãããã©ãããå€æããŸãã
be_valid
ã€ã³ã¹ã¿ã³ã¹ãæ£ããä¿åããããã©ããå€æããŸã
以äžãèžãŸãããšã以äžã®äžæã¯ã@userãã¡ãããšDBã«ä¿åããããã©ããã確èªããŸãã
expect(@user).to be_valid
valid?
valid?ã¯ãããªããŒã·ã§ã³ãå®è¡ãããŠããšã©ãŒããããã©ãããå€æããã¡ãœããã§ãã
ãšã©ãŒããªãå Žåã¯trueããããå Žåã¯falseãè¿ããŸãã
ãããå®æœããªããšãerrorsãçºçããªãããããšã©ãŒæãåŒãåºãããšãã§ããŸããã
errors
errorsã¯ãã€ã³ã¹ã¿ã³ã¹ã«ãšã©ãŒã瀺ãæ
å ±ãããå Žåããã®å
容ãè¿ãã¡ãœããã§ãã
full_messages
ãä»ãå ããããšã§ã¯ããšã©ãŒã®å
容ããããšã©ãŒã¡ãã»ãŒãžãé
åãšããŠåãåºããŸãã
include
includeã¯ããexpectã®åŒæ°ãã«ãincludeã®åŒæ°ããå«ãŸããŠããããšã確èªãããããã£ã§ãã
ã€ãŸãexpectã®()ã®äžèº«=includeã®ïŒïŒã®äžèº«ã«ãªãããã«èšè¿°ããŸãã
çŸåšãšã©ãŒåã¯æ¥æ¬èªã§èšè¿°ãããŠããŸãããbinding.pryã§æ¢ããŠç¢ºèªããŠã¿ãŠãã ããïŒ
binding.pryã¯äžèšã®èšè¿°ã§èšããš@user.valid?ã®äžã«èšè¿°ããŸãã
䜿ãããã«ã¯gem 'pry-rails'
ãGemfileã«èšè¿°ããŠbundle install
ããŠããïŒ
çµããã«
æ¬æ¥ã¯ãããŸã§ã
ãããã¯ã³ã³ãããŒã©ãŒã®ãã¹ãã§ãïŒ
ç¶ãâ