Model에서 테스트 해야 할 것.

  1. 유효한 attritutes를 넘겼을 때 model의 create method가 유효해야한다.
  2. 유효하지 않은 데이터는 유효성 검사를 통과하지 않아야 한다.
  3. 클래스 매소드(+scope)와 인스턴스 매소드가 예상한것과 같이 동작한다.


item.rb

class Item < ActiveRecord::Base
    ...
    validate :name, presence: true


1) 유효한 attritutes를 넘겼을 때 model의 create method가 유효해야한다.

context 'with valid attritues' do
    it '#create' do

        expect {
            Item.create(name: "A")
        }.to change(Item, :count).by(1)


2) 유효하지 않은 데이터는 유효성 검사를 통과하지 않아야 한다.

item = Item.new()
item.valid?
expect(item.errors[:name]).to include("can't be blank")


3) 클래스 매소드, scope, 인스턴스 매소드가 예상한것과 같이 동작한다.

it '#instance_method' do
end

it '::class_method' do
end



Everyday Rails testing with Rspec