2014-07-11 1 views
0

저는 Michael Hartl 's Rails 튜토리얼의 7.1.3 섹션에 있으며 FactoryGirl이 테스트에서 올바르게 작동하도록 할 수 없습니다. 그것은 이전에 후크에 User.create를 사용하여 User를 생성하려고 시도했기 때문에 FactoryGirl에서 문제가되지 않았으며 동일한 문제가있었습니다. 여기에 내가지고있어 결과는 다음과 같습니다 : I 테스트가 실행되었을 때 브라우저에서 오류의 스크린 샷을했다 rspec 테스트가 Hartl 's Rails 튜토리얼의 7 장에서 작동하지 않습니다.

console

:. (콘솔에서 결과를 볼 수있는 방법을 찾을 수 없습니다 그들은했다 나는 시험 콘솔을 실행했을 때 보여주지.) I는 서버와 콘솔을 다시 시작했다

Rails Error in Browser

. 테스트 환경에서 마이그레이션을 수행하여 최신 상태로 유지하십시오.

다음은 내 파일입니다. 또한 https://github.com/cjaypierson/sample_app/tree/sign-up

사양/요청/user_pages_spec.rb

require 'rails_helper' 

describe "User Pages" do 

    subject { page } 

    describe "Profile page" do 
     let(:user) { FactoryGirl.create(:user) } 
     before { visit user_path(user) } 

     it { should have_content(user.name) } 
     it { should have_title(user.name) } 
    end 

    describe "signup page" do 
     before { visit signup_path } 

     it { should have_content('Sign up') } 
     it { should have_title(full_title('Sign up')) } 
    end 
end 

사양/factories.rb

FactoryGirl.define do 
    factory :user do 
     name "Ed Sullivan" 
     email "[email protected]" 
     password "foobar" 
     password_confirmation "foobar" 
    end 
end 

사양에서 GitHub의에서이 작업을 찾을 수 있습니다/spec_helper.rb

require File.expand_path('config/environment.rb') 
require 'capybara' 
require 'capybara/rails' 
require 'capybara/rspec' 
require 'factory_girl_rails' 
require 'support/utilities.rb' 
Capybara.default_driver = :selenium 

RSpec.configure do |config| 
    config.include Capybara::DSL 
end 

뷰/사용자/show.html.erb

,
<% provide(:title, @user.name) %> 
<h1><%= @user.name %></h1> 

모델/user.rb

class UsersController < ApplicationController 
    def new 
    end 

    def show 
    @user = User.find(params[:id]) 
    end 
end 

컨트롤러/users_controller.rb

class UsersController < ApplicationController 
    def new 
    end 

    def show 
    @user = User.find(params[:id]) 
    end 
end 

Gemfile

source 'https://rubygems.org' 
ruby '2.1.1' 
#ruby-gemset=railstutorial_rails_4_0_5 

gem 'rails', '4.1.1' 
gem 'bootstrap-sass', '2.3.2.0' 
gem 'sprockets', '2.11.0' 
gem 'bcrypt-ruby', '3.1.2' 
gem 'pg' 

gem 'heroku_secrets', github: 'alexpeattie/heroku_secrets' 

group :development, :test do 
    gem 'rspec-rails' 
    gem 'capybara' 
end 

group :test do 
    gem 'selenium-webdriver' 
    gem 'factory_girl_rails' 
end 

gem 'sass-rails', '4.0.1' 
gem 'uglifier', '2.1.1' 
gem 'coffee-rails', '4.0.1' 
gem 'jquery-rails', '3.0.4' 
gem 'turbolinks', '1.1.1' 
gem 'jbuilder', '1.0.2' 

group :doc do 
    gem 'sdoc', '0.3.20', require: false 
end 

group :production do 
    gem 'rails_12factor', '0.0.2' 
end 

schema.rb

ActiveRecord::Schema.define(version: 20140708142214) do 

    # These are extensions that must be enabled in order to support this database 
    enable_extension "plpgsql" 

    create_table "users", force: true do |t| 
    t.string "name" 
    t.string "email" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.string "password_digest" 
    end 

    add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree 

end 

database.yml을

default: &default 
    adapter: postgresql 
    pool: 5 
    timeout: 5000 

development: 
    <<: *default 
    encoding: unicode 
    database: sadevelopment 

test: 
    <<: *default 
    encoding: unicode 
    database: satest 

도움을 주셔서 감사합니다.

답변

0

이전에 7.1.3 장을 읽었으므로 나는 당신을 찾았다. 이 책에서

:

describe "Profile page" do 
    let(:user) { FactoryGirl.create(:user) } 
    before { visit user_path(user) } 

    it { should have_content(user.name) } 
    it { should have_title(user.name) } 
end 

귀하의 코드 :

describe "Profile page" do 
    let(:user) { FactoryGirl.create(:user) } 
    before { visit user_path(@user) } 

    it { should have_content(@user.name) } 
    it { should have_title(@user.name) } 
end 

것은이 '@'는 @user 변수, 즉 작동하는지 알려 주시기 제거하십시오.

+0

감사 지적에 대한 그의 튜토리얼을 통해 갈 때 당신이 학습하는 경우 https://relishapp.com/rspec/docs/upgrade

은, 내가보기 엔 당신은 그가하는 같은 보석 버전을 사용하는 것이 좋습니다 : 여기에 언급 한 바와 같이 RSpec에 3, 많은 주요 변경이 있습니다 그거. 그래도 나는 여전히 같은 오류가 발생합니다. FactoryGirl을 사용하지 않고 코드를 테스트하려고 시도한 후 그 코드를 변경하는 것을 잊어 버렸습니다. 질문의 코드도 업데이트했습니다. – cjaypierson

0

Michael Hartl의 튜토리얼은 현재 RSpec 2.13.1을 사용하고 있습니다.

source 'https://rubygems.org' 
ruby '2.0.0' 
#ruby-gemset=railstutorial_rails_4_0 

gem 'rails', '4.0.8' 

group :development, :test do 
    gem 'sqlite3', '1.3.8' 
    gem 'rspec-rails', '2.13.1' 
end 

group :test do 
    gem 'selenium-webdriver', '2.35.1' 
    gem 'capybara', '2.1.0' 
end 

gem 'sass-rails', '4.0.1' 
gem 'uglifier', '2.1.1' 
gem 'coffee-rails', '4.0.1' 
gem 'jquery-rails', '3.0.4' 
gem 'turbolinks', '1.1.1' 
gem 'jbuilder', '1.0.2' 

group :doc do 
    gem 'sdoc', '0.3.20', require: false 
end 

group :production do 
    gem 'pg', '0.15.1' 
    gem 'rails_12factor', '0.0.2' 
end 
관련 문제