は、私はRailsの上FactoryGirlで奇妙な問題/エラーが生じています:FactoryGirl Railsの引数エラー
ArgumentError: wrong number of arguments (given 1, expected 0)
/Users/bintoy/ruby-apps/tradegecko-exercise/exercise-app/spec/factories/object_records.rb:3:in `object_id'
注:これは、このから重複問題ではありません。Why am I getting FactoryGirl wrong number of arguments error? - また、私はすでにのような可能な解決策の多くを試してみましたFactoryGirlsとSpringの問題を手動で読み込んだり、気付いたりします。しかし、誰も働いていませんでした。
アプリ/モデル/ object_record.rb
class ObjectRecord
include Mongoid::Document
validates_presence_of :object_id, :object_type, :timestamp, :object_changes
validates_uniqueness_of :timestamp, :scope => [:object_id, :object_type]
field :object_id, type: Integer
field :object_type, type: String
field :timestamp, type: DateTime
field :object_changes, type: Hash
end
スペック/機能/ user_searches_spec.rb:
セットアップは、データベースがMongoDBの(Mongoidマッパー)に基づいており、ここに関与しているファイルされていることです
require 'spec_helper'
require 'rails_helper'
feature 'User searches on table' do
before :each do
FactoryGirl.create(:object_record)
end
scenario 'with an object id', js: true do
input_a_search '1'
expect(page).to have_css(".sorting_1", :text => "1")
save_and_open_screenshot
end
def input_a_search(search_word)
visit object_records_index_path
find('input[type=search]').set(search_word)
end
end
スペック/工場/ object_records.rb
FactoryGirl.define do
factory :obect_record do
object_id 1
object_type "ObjectA"
timestamp 1465748715
object_changes ({:property1 => "val1"})
end
end
仕様/サポート/ factory_girl.rb
RSpec.configure do |config|
config.include FactoryGirl::Syntax::Methods
end
スペック/ spec_helper.rb
RSpec.configure do |config|
config.after(:all) do
DatabaseCleaner.clean_with(:truncation)
end
config.before(:suite) do
FactoryGirl.reload
end
config.expect_with :rspec do |expectations|
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
end
config.mock_with :rspec do |mocks|
mocks.verify_partial_doubles = true
end
end
スペック/ rails_helper.rb
ENV['RAILS_ENV'] ||= 'test'
require File.expand_path('../../config/environment', __FILE__)
abort("The Rails environment is running in production mode!") if Rails.env.production?
require 'spec_helper'
require 'rspec/rails'
require 'capybara/rspec'
require 'capybara/rails'
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
require 'factory_girl_rails'
Dir[Rails.root.join('spec/support/**/*.rb')].each { |f| require f }
RSpec.configure do |config|
config.include Capybara::DSL
config.infer_spec_type_from_file_location!
config.filter_rails_from_backtrace!
end
EDIT:ちょうどランダムのうち しようこれをデバッグするために、私は工場でobject_idの引数を省略して何が起こるかを見てみました:
FactoryGirl.define do
factory :obect_record do
object_id
...
しかし、その代わりに、私はRSpecのから、この失敗/エラーメッセージが表示されました:
1) User searches on table with an object id
Failure/Error: FactoryGirl.create(:object_record)
ArgumentError:
Factory not registered: object_record
# ./spec/features/user_searches_spec.rb:8:in `block (2 levels) in <top (required)>'
おい、あなたロック!ありがとう!私はこれを取らないだろう。すべての入力を使用して問題を解決しました。 – Raven