[英]Rails: How to Test an Array's Order with RSpec
我是RSpec的新手,所以我正在尋找一個簡單測試的幫助:
# controller method
def show
@group = Group.find(params[:id])
@group_members = @group.group_members.order("posts ASC")
end
# in my rspec
it "should show order correctly" do
@group = FactoryGirl.create(:group)
@user_1 = FactoryGirl.create(:user, user_name: "Gary")
@user_2 = FactoryGirl.create(:user, user_name: "Shawn")
@user_3 = FactoryGirl.create(:user, user_name: "Gus")
@user_4 = FactoryGirl.create(:user, user_name: "Jack")
@group_member_1 = FactoryGirl.create(:group_member, group_id: @group.id, user_id: @user_1.id, posts: 30)
@group_member_2 = FactoryGirl.create(:group_member, group_id: @group.id, user_id: @user_2.id, posts: 20)
@group_member_3 = FactoryGirl.create(:group_member, group_id: @group.id, user_id: @user_3.id, posts: 10)
@group_member_4 = FactoryGirl.create(:group_member, group_id: @group.id, user_id: @user_4.id, posts: 15)
visit group_path(@group)
# how do i assert the order of the array?
end
有人可以幫我一個聲明,以檢查數組是否正確排序嗎?
my_array.should eq expected_array
這樣可以確保每個項目都位於完全相同的位置。 如果要檢查一個數組與另一個數組具有相同的元素,但是順序無關緊要,請執行以下操作:
my_array.should =~ expected_array
所以,你的具體情況,你首先需要做一個get
到show
動作,然后檢查變量。 這樣完成:
get :show, :id => @group.id
expected_group_members = [@group_member_3, @group_member_4, @group_member_2, @group_member_1]
assigns(:group_members).should eq expected_group_members
有關更多信息,請查看RSpec的GitHub頁面 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.