2016-12-21 4 views
1

Je suis en train de créer une application à l'école et je rencontre cette erreur. En ce moment, l'application marche à travers a été commencé dans les rails 4.2.6, et je cours 5.0.0.1.Les tests échouent lors de la création d'un enregistrement dans Rails 5

L'erreur est:

Failures: 

    1) Post Creation can be created 
    Failure/Error: expect(@post).to be_valid 
    expected #<Post id: nil, date: "2016-12-20", rationale: "Anything", created_at: nil, updated_at: nil, user_id: nil> to be valid, but got errors: User must exist 
    # ./spec/models/post_spec.rb:10:in `block (3 levels) in <top (required)>' 

Finished in 0.65569 seconds (files took 2.19 seconds to load) 
10 examples, 1 failure 

Failed examples: 

    rspec ./spec/models/post_spec.rb:9 # Post Creation can be created 

Mon code est le suivant. J'ai comparé au repo sur le walk-through et ça correspond parfaitement. Qu'est-ce que je rate?

require 'rails_helper' 

RSpec.describe Post, type: :model do 
    describe "Creation" do 
    before do 
     @post = Post.create(date: Date.today, rationale: "Anything") 
    end 

    it "can be created" do 
     expect(@post).to be_valid 
    end 

    it "cannot be created without a date and rationale" do 
     @post.date = nil 
     @post.rationale = nil 
     expect(@post).to_not be_valid 
    end 
    end 
end 
+0

Vérifiez votre fichier 'test.log'; l'enregistrement n'a pas été stocké dans la base de données pour une raison quelconque et il est impossible de dire exactement pourquoi sans examiner le journal. – mudasobwa

Répondre

0

Rails 5 diffère de Rails 4 en ce que lorsque vous avez une relation belongs_to, Rails 5 sera automatically validate the presence de l'objet associé, même sans vous ajouter des validations. Le modèle Post appartient probablement à un User. Pour cette raison, vous devez créer un utilisateur dans votre configuration de test, sinon la validation échouera:

describe "Creation" do 
    before do 
    @user = User.create(...) 
    @post = Post.create(date: Date.today, rationale: "Anything", user: @user) 
    end 

    it "can be created" do 
    expect(@post).to be_valid 
    end 

    it "cannot be created without a date and rationale" do 
    @post.date = nil 
    @post.rationale = nil 
    expect(@post).to_not be_valid 
    end 
end