1
그래서 테스트하지 않고 첫 번째 Rails 앱을 만들었습니다. 이제 첫 번째 테스트로 앱을 다시 작성합니다. 내가 만드는 모델 (작업)에 대한 요청 사양을 만들고 있습니다. 나는 새로운 Task를 만들기위한 폼을 테스트하고있다.Capybara의 문제 + 새 모델 사양의 RSpec
작업 수가 1 (즉, 새 작업이 저장 됨)으로 변경되지만 변경되지는 않습니다. 나는 기본적으로 Michael Hartl의 코드를 따랐다.
Error:
1) Task Pages Creating a Task with valid information creates a Task
Failure/Error: expect { click_button "Create task" }.to change(Task, :count).by(1)
count should have been changed by 1, but was changed by 0
# ./spec/requests/tasks_pages_spec.rb:22:in `block (4 levels) in <top (required)>'
관련 코드 : 모델
class Task < ActiveRecord::Base
attr_accessible :begin_time, :day, :end_time, :gear, :notes, :preset, :room, :setup,
:strike
validates :room, presence: true
validates :begin_time, presence: true
validates :end_time, presence: true
validates :gear, presence: true
validates :day, presence: true
end
컨트롤러
def new
@task = Task.new
end
def create
@task = Task.new(params[:task])
if @task.save
redirect_to root_path
else
render 'new'
end
end
통합 테스트
require 'spec_helper'
describe "Task Pages" do
subject { page }
describe "Creating a Task" do
let(:submit) { "Create task" }
before { visit new_task_path }
describe "with valid information" do
before do
fill_in "Day", with: Date.today
fill_in "Room", with: "6W-002"
fill_in "Begin", with: Time.now
fill_in "End", with: 1.hour.from_now
fill_in "Gear", with: "LCD"
end
it "creates a Task" do
expect { click_button "Create task" }.to change(Task, :count).by(1)
end
end
end
end
그리고 형태
<%= form_for(@task) do |t| %>
<%= t.label :day %>
<%= t.text_field :day %>
<%= t.label :room %>
<%= t.text_field :room %>
<%= t.label :begin_time, "Begin" %>
<%= t.text_field :begin_time %>
<%= t.label :end_time, "End" %>
<%= t.text_field :end_time %>
<%= t.label :gear %>
<%= t.text_field :gear %>
<%= t.label :day %>
<%= t.text_field :day %>
<%= t.submit "Create task", class: "btn btn-large btn-primary" %>
<% end %>
지금 당장 테스트 할 기회가 없지만 몇 시간 내에 답변을 드리겠습니다. 나는 그것을 놓쳤다는 것을 믿을 수 없다. 고맙습니다. – douglas
지금까지 수정 사항을 확인할 기회가 없었으며 작동했습니다. 도와 주셔서 감사합니다. – douglas
@ douglasisshiny 굉장하고, 그것을 듣고 기쁘게 생각합니다. –