2012-12-16 19 views
0

我在Rspec的是新的,和我讀的書 '在行動中軌3',有我有Rspec的測試:Rspec的誤上開始

規格/ controlers/proect_controller_spec:

require 'spec_helper' 

describe ProjectsController do 
    let(:user) do 
    user = Factory(:user) 
    user.confirm! 
    user 
    end 

    let(:project) { Factory(:project) } 

    context "standard users" do 

    it "cannot access the show action" do 
     sign_in(:user, user) 
    end 

    end 
end 

規格/工廠/ user_factory.rb

Factory.define :user do |user| 
    user.sequence(:email) { |n| "user#{n}@ticketee.com" } 
    user.password "password" 
    user.password_confirmation "password" 
end 

規格/支持/ factories.rb

Dir[Rails.root + "factories/*.rb"].each do |file| 
    require file 
end 

規格/ spec_helper

ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'rspec/autorun' 
require "email_spec" 

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 

RSpec.configure do |config| 
    config.fixture_path = "#{::Rails.root}/spec/fixtures" 
    config.use_transactional_fixtures = true 
    config.infer_base_class_for_anonymous_controllers = false 
    config.order = "random" 
end 

的Gemfile

source 'https://rubygems.org' 

gem 'rails', '3.2.9' 
gem 'pg' 
gem 'devise' 

group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'dynamic_form' 
    gem 'uglifier', '>= 1.0.3' 
end 

gem 'jquery-rails' 

group :test, :development do 
    gem 'rspec-rails', '~> 2.5' 
end 

group :test do 
    gem 'capybara' 
    gem 'database_cleaner' 
    gem 'factory_girl' 
    gem 'email_spec' # 122 page, for email confirmation 
end 

,當我開始:rspec ./spec/controllers/projects_controller_spec.rb

我得到:

ProjectsController standard users cannot access the show action 
    Failure/Error: user = Factory(:user) 
    NoMethodError: 
     undefined method `Factory' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x8e96710> 

在那裏我錯了......

回答

2

我想你想 「factory_girl_rails」,而不是 「factory_girl」:https://github.com/thoughtbot/factory_girl_rails

+0

不,在書中我們使用factory_girl(但如果我更改factory_girl_rails並添加方法在aplication.rb我仍然有同樣的問題) –

+0

雖然它在書中說,工廠女孩的API已更改(請參閱博文我在回答中提到),所以@David是絕對正確的,這本書已經過時了。 – nathanvda

1

FactoryGirl的語法已更改,現在您不能再寫

Factory(:user) 

,但你應該寫

FactoryGirl.create(:user) 

欲瞭解更多信息,請參閱getting started document。 有關升級到版本3.0的更多信息(包括棄用舊語法),請參見this blogpost