이 레일에서 테스트하는 방법을 배우려는 tutorial. 튜토리얼의 한 부분에rspec 및 factorygirl을 사용하여 invalid_attribute를 테스트하는 방법
, 그것은 invalid_attribute
테스트를 작성하는 방법을 보여줍니다
require 'rails_helper'
RSpec.describe ContactsController, type: :controller do
describe "POST #create" do
context "with valid attributes" do
it "create new contact" do
post :create, contact: attributes_for(:contact)
expect(Contact.count).to eq(1)
end
end
context "with invalid attributes" do
it "does not create new contact" do
post :create, contact: attributes_for(:invalid_contact)
expect(Contact.count).to eq(0)
end
end
end
end
가 이해가 안 어디 :contact
및 :invalid_contact
점이다.
:contact
은 Contact
클래스를 가리 킵니까? 그것은 FactoryGirl's gh.에서 그런 것 같아요 :invalid_contact
클래스가 없으므로 그렇다면 어떻게 :invalid_contact
을 만들 수 있습니까?
나는 post :create, contact: attributes_for(:contact, :full_name => nil)
을 시도했지만 여전히 실패합니다.
spec/factories/contacts.rb
:
FactoryGirl.define do
factory :contact do
full_name { Faker::Name.name }
email { Faker::Internet.email }
phone_number { Faker::PhoneNumber.phone_number }
address { Faker::Address.street_address }
end
end
먼저 테스트 with valid attributes
통과. 모델에는 존재 확인 validates_presence_of :full_name, :email, :phone_number, :address
이 있습니다. "with invalid attributes"
시험에 합격하기 위해서는 무엇을 추가해야합니까?
': contact'는 Factory Girl로 만든 팩토리이며': invalid_contact' , https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md를 보시고 그것을 만드는 방법을보실 수 있습니다. – fanta
할거야. 포인터 @ 주셔서 고마워! – Iggy