2017-11-09 119 views
6

Jestem nowicjuszem w RSpec. Mam model teacher, który jest has_many :lessons. Oto moje FactoryGirls wyniki:Jak napisać RSpec, aby sprawdzić, czy powiązany rekord istnieje?

Spec/fabryki/lessons.rb

FactoryGirl.define do 
    factory :lesson do 
    title "Rspec test" 
    description "test description" 
    company_name "narola pvt" 
    association :teacher 
    location "Zwanenplein 34" 
    days_to_pay 2 
    end 
end 

Spec/fabryki/teachers.rb

FactoryGirl.define do 
    factory :teacher do 
    first_name "Teacher's name" 
    last_name "Teacher's last name" 
    address "los angeles" 
    city "california" 
    zip_code "12345" 
    country "USA" 
    birthdate nil 
    phone nil 
    password "password" 
    email { "example#{SecureRandom.uuid}@email.dummy" } 
    end 
end 

Poniżej moja próba z modelach testowych:

spec/models/teacher_spec.rb

require 'rails_helper' 

RSpec.describe Teacher, type: :model do 
    let(:teacher) { FactoryGirl.create(:teacher) } 

    it "should have at least one lesson" do 
    config.expect_with(Lesson.where(teacher_id: teacher)){|c| c.syntax = :should} 
    end 
end 

Jestem gotów napisać test testowy rspec, aby dowiedzieć się, czy istnieje lekcja dla konkretnej lekcji. Każda pomoc zostanie doceniona. Jeśli potrzebujesz więcej informacji, daj mi znać.

Z góry dziękuję.

Odpowiedz

4

Spróbuj tego:

it "should have at least one lesson" do 
    expect(Lesson.where(teacher_id: teacher.id)).to exist  
end 

Daj mi znać, jeśli jest to praca dla Ciebie. Nie próbowałem tego.

+1

Dziękuję bardzo za twoje wysiłki. To zadziałało dla mnie. I spróbowałem go także i to zadziałało. :) 'spodziewać (teacher.lessons) .to be_present' – Vishal