L'écriture des tests RSpec utilisant MongoMapper
-
27-10-2019 - |
Question
Voici mon test dans mon contrôleur:
describe "GET index" do
it "assigns all comments as @comments" do
comment = Comment.create! valid_attributes
get :index, { :url => "http://localhost:3000", :use_route => :good_comments}
assigns(:comments).should eq([comment])
end
end
Quand je lance le test, il a des valeurs différentes pour :comments
et comment
. Le premier est ce que l'on pouvait s'y attendre:
#<MyComments::Comment _id: BSON::ObjectId('4f0f7c41516d9f5a4a000001'), comment: "Some comment", created_at: Fri, 13 Jan 2012 00:35:13 UTC +00:00, images: [], resource_hash: "aHR0cDovL2xvY2FsaG9zdDozMDAwLw==", updated_at: Fri, 13 Jan 2012 00:35:13 UTC +00:00, urls: [], user_id: nil>
La seconde est tout simplement bizarre:
#<Plucky::Query sort: [["created_at", -1]], transformer: #<Proc:0x007fe86e3184c8@/Users/shamoon/.rvm/gems/ruby-1.9.2-p290@global/gems/mongo_mapper-0.10.1/lib/mongo_mapper/plugins/querying.rb:79 (lambda)>
Je ne sais pas ce qui se passe, de sorte que toute aide serait grandement appréciée.
Merci =)
EDIT: Ajout de code contrôleur
# POST /comments
# POST /comments.json
def create
@comment = Comment.new params[:comment]
respond_to do |format|
if @comment.save
format.html { redirect_to :back, notice: 'Comment was successfully created.' }
format.json { render json: @comment, status: :created, location: @comment }
else
format.html { render action: "new" }
format.json { render json: @comment.errors, status: :unprocessable_entity }
end
end
end
# GET /comments
# GET /comments.json
def index
url = ""
if params[:url]
url = params[:url]
end
resource_hash = Comment.encode_url url
@newComment = Comment.new
@newComment.resource_hash = resource_hash
@comments = Comment.find_all_by_resource_hash resource_hash
@comments = Comment.sort(:created_at.desc)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @comments }
end
end
EDIT: MISE À JOUR D'ACTION index
def index
url = ""
if params[:url]
url = params[:url]
end
resource_hash = Comment.encode_url url
@newComment = Comment.new
@newComment.resource_hash = resource_hash
@comments = Comment.where(:resource_hash => resource_hash).sort(:created_at.desc)
respond_to do |format|
format.html # index.html.erb
format.json { render json: @comments }
end
end
La solution
@comments = Comment.find_all_by_resource_hash resource_hash
@comments = Comment.sort(:created_at.desc)
c'est votre problème, vous écrasez la variable @comments dans la deuxième ligne, essayez ceci pour commencer, je ne sais pas si cela va vous permettre d'appeler ce genre, mais bien voir:
@comments = Comment.find_all_by_resource_hash resource_hash
@comments = @comments.sort(:created_at.desc)
UPDATE
Essayez de faire ceci:
@comments = Comment.where(:resource_hash => resource_hash).sort(:created_at.desc).all
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow