ich RSpec für api leite, insbesondere Beiträge zu erstellen (auch ich bin auf: update und:. Zerstören, aber die zwei laufen fein Ich habe Probleme mit: create)Rails, wie man eine fehlerhafte Anfrage repariert (Fehlercode 400)?
Hier sind meine RSpec:
describe "POST create" do
before { post :create, topic_id: my_topic.id, post: {title: @new_post.title, body: @new_post.body} }
it "returns http success" do
expect(response).to have_http_status(:success)
end
it "returns json content type" do
expect(response.content_type).to eq 'application/json'
end
it "creates a topic with the correct attributes" do
hashed_json = JSON.parse(response.body)
expect(hashed_json["title"]).to eq(@new_post.title)
expect(hashed_json["body"]).to eq(@new_post.body)
end
end
Und hier ist meine schaffen
def create
post = Post.new(post_params)
if post.valid?
post.save!
render json: post.to_json, status: 201
else
render json: {error: "Post is invalid", status: 400}, status: 400
end
end
hier ist der Fehlercode, die ich erhalte:
.........F.F....
Failures:
1) Api::V1::PostsController authenticated and authorized users POST create returns http success
Failure/Error: expect(response).to have_http_status(:success)
expected the response to have a success status code (2xx) but it was 400
# ./spec/api/v1/controllers/posts_controller_spec.rb:78:in `block (4 levels) in <top (required)>'
Ich bin wirklich nicht sicher, was mit dem Code falsch ist. Die Routen funktionieren gut. Wie kann ich die Tests bestehen lassen?
Es ist offensichtlich, dass 'post.valid?' 'False' ist. Finde heraus warum! Vielleicht, indem Sie einen 'p post.errors' in den 'else'-Teil Ihrer Controller-Methode einfügen. – spickermann
Sie können log/test.log überprüfen, um den Fehler zu sehen. Alternativ können Sie Ihre Frage für andere verlinken, um beim Debuggen zu helfen. – Shishir
@Shishir Könnten Sie teilen, wie ich die Frage für Debugging-Hilfe verknüpfen kann? Vielen Dank! – Iggy