Я разрабатывал пример приложения после прочтения учебника по Rails 3.В этом приложении есть много разделов, и у каждого раздела есть одно видео.
Вот артефакты этого приложения:
Модели
class Video < ActiveRecord::Base
has_many :sections
end
class Section < ActiveRecord::Base
belongs_to :video
validates :name, presence: true, length: { maximum: 50 }
end
RSpec
require 'spec_helper'
describe Section do
let(:video) { Video.new(name: "Dummy Video Name", path: "/home/data/video/test.mov") }
before do
@section = video.sections.build(name: 'Test Section')
end
subject { @section }
# Check for attribute accessor methods
it { should respond_to(:name) }
it { should respond_to(:video) }
it { should respond_to(:video_id) }
its(:video) { should == video }
# Sanity check, verifying that the @section object is initially valid
it { should be_valid }
describe "when name is not present" do
before { @section.name = "" }
it { should_not be_valid }
end
describe "when name is too long" do
before { @section.name = "a" * 52 }
it { should_not be_valid }
end
describe "when video_id not present" do
before { @section.video_id = nil }
it { should_not be_valid }
end
...
end
И определения схемы обеих Моделей
..
create_table "sections", :force => true do |t|
t.string "name"
t.integer "video_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "videos", :force => true do |t|
t.string "name"
t.string "path"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
...
При выполнении выше rspec я получаю следующую ошибку.
Failures:
1) Section
Failure/Error: it { should be_valid }
expected valid? to return true, got false
# ./spec/models/section_spec.rb:22:in `block (2 levels) in <top (required)>'
2) Section video
Failure/Error: its(:video) { should == video }
expected: #<Video id: nil, name: "Dummy Video Name", path: "/home/data/video/test.mov", created_at: nil, updated_at: nil>
got: nil (using ==)
# ./spec/models/section_spec.rb:19:in `block (2 levels) in <top (required)>'
Я мог бы сопоставить свое требование с отношением User-Micropost, описанным в книге, и согласовать RSpec с ними.У меня ограниченные знания по Rails и всей системе эхо.
Пожалуйста, помогите мне решить эту проблему, и некоторые ссылки на валидацию Модели с RSpec (и должны) очень заметны.