2
我正在用mongoid odm構建一個軌道4安裝的應用程序。一切正常,但rspec測試無法正常工作。當我運行bundle exec rspec
時出現錯誤,說:Rails 4與rspec和factory_girl_rails安裝引擎
廠沒有登記:cafcaf_user
我的用戶模型:
module Cafcaf
class User
include Mongoid::Document
field :username, type: String
field :email, type: String
field :full_name, type: String
field :last_name, type: String
end
end
我spec_helper.rb
# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../spec/test_app/config/environment.rb", __FILE__)
require 'rspec/rails'
# Requires supporting ruby files with custom matchers and macros, etc, in
# spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
# run as spec files by default. This means that files in spec/support that end
# in _spec.rb will both be required and run as specs, causing the specs to be
# run twice. It is recommended that you do not name files matching this glob to
# end with _spec.rb. You can configure this pattern with with the --pattern
# option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }
# Checks for pending migrations before tests are run.
# If you are not using ActiveRecord, you can remove this line.
ActiveRecord::Migration.check_pending! if defined?(ActiveRecord::Migration)
RSpec.configure do |config|
# ## Mock Framework
#
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
#
# config.mock_with :mocha
# config.mock_with :flexmock
# config.mock_with :rr
# Run specs in random order to surface order dependencies. If you find an
# order dependency and want to debug it, you can fix the order by providing
# the seed, which is printed after each run.
# --seed 1234
config.order = "random"
end
我user_spec.rb
require 'spec_helper'
module Cafcaf
describe User do
it "has a valid factory" do
FactoryGirl.create(:cafcaf_user).should be_valid
end
it "is invalid without a username"
it "is invalid without an email"
end
end
我factories.rb
FactoryGirl.define do
factory :cafcaf_user, :class => 'User' do
username "MyString"
email "MyString"
full_name ""
last_name "MyString"
end
end
我的lib/cafcaf/engine.rb
module Cafcaf
class Engine < ::Rails::Engine
isolate_namespace Cafcaf
config.generators do |g|
g.test_framework :rspec
g.fixture_replacement :factory_girl, :dir => 'spec/factories'
end
end
end
我的Gemfile
source "https://rubygems.org"
gem 'rails', "~> 4.0.4"
gem 'mongoid', github: 'mongoid/mongoid', tag: 'v4.0.0.beta1'
group :development, :test do
gem 'rspec-rails', '~> 3.0.0.beta2'
gem 'database_cleaner', '~> 1.2.0'
gem 'factory_girl_rails', '~> 4.4.1'
end
我gemspec
$:.push File.expand_path("../lib", __FILE__)
require "cafcaf/version"
# Describe your gem and declare its dependencies:
Gem::Specification.new do |s|
s.name = "cafcaf"
s.version = Cafcaf::VERSION
s.authors = ["Your name"]
s.email = ["[email protected]"]
s.homepage = "http://ir.io"
s.summary = "Summary of Cafcaf."
s.description = " Description of Cafcaf."
s.files = Dir["{app,config,db,lib}/**/*", "MIT-LICENSE", "Rakefile", "README.rdoc"]
s.add_dependency "rails", "~> 4.0.4"
end
正是我不知道要繼續。如何在安裝的rails引擎應用程序中使用rspec和factory_girs gem?我做了大量的測試,但沒有找到解決方案。
請將您的解決方案作爲答案發布,並將其選爲答案。希望這將有助於未來的其他人(如果它得到3票,你會得到「自學者」徽章)。 – cjn
我編輯它。感謝您的關注。 – zeitnot