2014-11-02 31 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)在您的控制器代码中放置一个中断点。这将使您能够确切地看到传递给控制器​​的参数,并且还允许您一次只读一行代码。