Rspec
Dec 07, 16
.to be 와 .to eq 의 차이
eq는 값을 비교 be는 object 자체를 비교 (같은 값을 가진 다른 오브젝트는 be를 사용했을 때, 다르다고 판정을 내림)
.eq 와 .match_array의 차이
eq는 순서를 따짐 match_array는 순서를 따지지 않음
###stub a chain of methods
it 'populates items in order of rank in requested sub_menu', :vcr do
menu = create(:menu)
sub_menu = create(:sub_menu, menu_id: menu.id)
item1 = create(:item, sub_menu_id: sub_menu.id)
item2 = create(:item, sub_menu_id: sub_menu.id)
SubMenu.stub_chain(:friendly, :find).with(sub_menu.id).and_return(sub_menu)
allow(sub_menu).to receive(:items_by_rank).and_return([item1, item2])
get :show, id: sub_menu.id
expect(assigns(:items)).to eq [item1, item2]
end
Stub Method
Check if class method is called
it 'calls #update_sub_menu_rank_v2 of its sub_menus', :focus do
menu = create(:menu_with_sub_menus)
item = build(:item_with_sub_menu, name: '베베숲물티슈', brand: '베베숲', sub_menus: menu.sub_menus)
# method stub
allow(item).to receive(:create_weekly_rank) { true }
sub_menu = item.sub_menus.first
expect(Rank).to receive(:update_sub_menu_rank_v2).with(sub_menu.id, Time.now.end_of_week)
item.save
end