簡體   English   中英

Rails:如何使用RSpec測試陣列的順序

[英]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

所以,你的具體情況,你首先需要做一個getshow動作,然后檢查變量。 這樣完成:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM