这是我的Gemfile配置:
group :development, :test do
gem 'rspec-rails'
gem 'factory_girl', '~>2.0.0.beta1'
gem 'factory_girl_rails', :git => 'https://github.com/thoughtbot/factory_girl_rails.git', :tag => 'v1.1.beta1'
end
Run Code Online (Sandbox Code Playgroud)
这是我的spec_helper.rb:
# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require "factory_girl"
# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
Dir[Rails.root.join("spec/factories/**/*.rb")].each {|f| require f}
Run Code Online (Sandbox Code Playgroud)
我将factories文件夹添加到LOAD_PATH,因为我想将它们保存在单独的文件夹中.
这是我的factories.rb档案:
需要File.expand_path(File.dirname(FILE)+'../../spec_helper')
Factory.define(:user) …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的用户模型创建一个工厂,但是当我运行rspec时,我得到了
Failure/Error: user = build(:user, email: "invalid@email.com")
NameError:
uninitialized constant User
Run Code Online (Sandbox Code Playgroud)
当我跳进rails控制台时,我可以做User.all,它会返回我拥有的用户并且FactoryGirl.build(:user, email: "invalid@email.com")工作正常,所以我不确定问题出在哪里.
我用rails-api创建了项目,使用rails 4.2 ruby 2.2
# spec/spec_helper.rb
# i have to set spec/factories as the location explicitly or it won't find the factories
require 'factory_girl_rails'
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
FactoryGirl.definition_file_paths = [File.expand_path('../factories', __FILE__)]
FactoryGirl.find_definitions
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
end
config.mock_with :rspec do |mocks|
mocks.verify_partial_doubles = true
end
config.filter_run :focus
config.run_all_when_everything_filtered = true
if config.files_to_run.one?
config.default_formatter = 'doc'
end
config.profile_examples = 10
config.order = …Run Code Online (Sandbox Code Playgroud)