2016-04-25 8 views
1

Comments_controller_test.rbMinitest für Beitrag in Controller-

require 'test_helper' 

class CommentsControllerTest < ActionController::TestCase 
    test "should create a comment" do 

    assert_difference('Comment.count') do 
     post :create, comment: {user_id: 1, job_id: 1, content: "This is a comment"} 
    end 

    end 
end 

Comments_controller.rb

class CommentsController < ApplicationController 

def create 
    @comment = Comment.new(comment_params) 

    if @comment.save 
     render :json => {:status => 'success', :entry => @comment} 
    else 
     render :json => {:status => 'error'} 
    end 
end 

    def comment_params 
    params.require(:comment).permit(:job_id, :user_id, :content) 
    end 
end 

Kommentare Tabelle:

class CreateComments < ActiveRecord::Migration 
    def change 
    create_table :comments do |t| 
     t.string :user_id 
     t.string :job_id 
     t.string :content 

     t.timestamps null: false 
    end 
    end 
end 

Als ich das laufen, erhalte ich:

Finished in 0.162164s, 110.9987 runs/s, 117.1653 assertions/s. 

1) Failure: 
CommentsControllerTest#test_should_create_a_comment  

"Comment.count" didn't change by 1. 
Expected: 4 
Actual: 3 

Irgendwelche Ideen, warum dies nicht erstellt wird? Das Erstellen eines Kommentars funktioniert mit der tatsächlichen Anwendung, aber aus irgendeinem Grund wird der Test nicht bestanden

Hinweis: Ich habe 3 Kommentare im Fixture erstellt (so wird es mit 3 gezählt).

+0

Perfekt! Du hast recht. Es wurde gesagt, dass ich umgeleitet wurde, weil ich nicht angemeldet war. Ich musste dies in meine comment_controller_test.rb-Datei einfügen: setup do controller.class.skip_before_filter: require_login ende – user3007294

Antwort

2

Sie können die Antwort vom Server debuggen. Fügen Sie puts response.body nach post :create, comment: { ... } hinzu und überprüfen Sie die Protokolle.

Verwandte Themen