2014-11-02 55 views
0

我在寫這個測試之前通過了所有的測試 - 在寫下面的測試失敗之後。通常測試給你提示到哪裏修復試驗,但是這隻能說明:「Relationship.count」沒有改變2.期望值:6實際值:4

FAIL["test_should_successfully_create_2_user_relationship_objects", RelationshipsControllerTest, 1.146038] 
test_should_successfully_create_2_user_relationship_objects#RelationshipsControllerTest (1.15s) 
     "Relationship.count" didn't change by 2. 
     Expected: 6 
      Actual: 4 
     test/controllers/relationships_controller_test.rb:193:in `block in <class:RelationshipsControllerTest>' 

    74/74: [=====================================================================================================================] 100% Time: 00:00:01, Time: 00:00:01 

Finished in 1.14952s 
74 tests, 180 assertions, 1 failures, 0 errors, 0 skips 

線193是:

assert_difference 'Relationship.count', 2 do 

,但現在我不知道去哪裏找解決這個問題。我對Rails相當陌生,不知道如何去解決這個問題。任何提示在哪裏看,將不勝感激!我不確定代碼是如何通過測試來知道從哪裏開始尋找的。

,據我所知,這是相關代碼:

relationships_controller_test.rb:

test "should successfully create 2 user relationship objects" do 
    assert_difference 'Relationship.count', 2 do 
     post :create, relationship: { followed_id: users(:firstname).name } 
    end 
    end 

模型/ relationship.rb:

# makes sure 2 relationships are created otherwise none are created. 
    def self.request(user1, user2) 
    transaction do 
     relationship1 = create!(follower: user1, followed: user2, state: 'pending') 
     relationship2 = create!(follower: user2, followed: user1, state: 'requested') 

     relationship1.send_request_email 
     relationship1 
    end 
    end 

relationship_controller.rb:

def create 
    if params[:relationship] && params[:relationship].has_key?(:followed_id) 
     # @followed = User.find(params[:relationship][:followed_id]) 
     @followed = User.where(name: params[:active_relationship][:followed_id]).first 
     @active_relationship = Relationship.request(current_user, @followed) 
     if @active_relationship.new_record? 
     flash[:danger] = "There was a problem creating that relationship request" 
     else 
     flash[:success] = "Friend request sent" 
     end 
     redirect_to followed_path(@followed) 
    else 
     flash[:danger] = "Friend Required" 
     redirect_to users_path 
    end 
    end 

個燈具/ relationships.yml:

之一: 從動:姓 遵循:FIRSTNAME3

二: 從動:姓 遵循:firstname4

三: 從動:FIRSTNAME3 如下:姓名

四: 追隨者:名字2 其次:名字

回答

0

它看起來像你的控制器,你參考params[:active_relationship] - 這應該是params[:relationship]?如果沒有提供該參數,看起來控制器代碼會引發錯誤。

調試問題的一個好方法是運行rails console並嘗試模仿控制器的行爲。這將爲您提供有關錯誤位置的更多具體信息。或者,您可以使用debugger gem(或導軌4中的byebug)在您的控制器代碼中放置一箇中斷點。這將使您能夠確切地看到傳遞給控制器​​的參數,並且還允許您一次只讀一行代碼。