2012-10-14 2 views
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 %> 

답변

2

양식에 :day 필드가 두 번 있습니다. 첫 번째 테스트는 아마도 테스트에 의해 채워지고 두 번째 테스트에서는 빈 값으로 계산됩니다.

+0

지금 당장 테스트 할 기회가 없지만 몇 시간 내에 답변을 드리겠습니다. 나는 그것을 놓쳤다는 것을 믿을 수 없다. 고맙습니다. – douglas

+0

지금까지 수정 사항을 확인할 기회가 없었으며 작동했습니다. 도와 주셔서 감사합니다. – douglas

+0

@ douglasisshiny 굉장하고, 그것을 듣고 기쁘게 생각합니다. –

관련 문제