Ho una gemma che include alcune fabbriche. La gemma simile a:Come posso condividere le fabbriche che ho in un GEM e usarlo in un altro progetto?
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
├── db
├── lib
│ ├── models
│ │ ├── users.rb
├── pkg
├── core.gemspec
├── spec
│ ├── factories
│ │ └── users.rb
│ ├── fixtures
│ ├── helpers
│ ├── integration
│ ├── spec_helper.rb
│ ├── support│ │
│ └── unit
│ └── users_spec.rb
└── tasks
ora sto usando la gemma in un altro progetto Rubino (uva) con l'aggiunta di qualcosa di simile a gem 'core', git: 'https://url.git'
.
Ora tutto funziona correttamente, poiché è possibile utilizzare il modello User
dal progetto Grape.
Tuttavia, desidero utilizzare le fabbriche (users
) in modo da poter scrivere ulteriori test di integrazione per il progetto Grape.
Nel progetto di uva, in spec_helper.rb
Assomiglia:
require 'rubygems'
require 'bundler/setup'
Bundler.require(:default, :development)
ENV['RACK_ENV'] ||= 'test'
require 'rack/test'
require File.expand_path('../../config/environment', __FILE__)
RSpec.configure do |config|
config.mock_with :rspec
config.expect_with :rspec
config.raise_errors_for_deprecations!
config.include FactoryGirl::Syntax::Methods
end
require 'capybara/rspec'
Capybara.configure do |config|
config.app = Test::App.new
config.server_port = 9293
end
Ora il mio test 'users_spec.rb' assomiglia:
require 'spec_helper'
describe App::UsersController do
include Rack::Test::Methods
def app
App::API
end
describe "https://stackoverflow.com/users/me" do
context "with invalid access token" do
before(:each) do
get "/api/v2/users/me"
user = build(:user)
end
it 'returns 401 error code' do
expect(last_response.status).to eq(401)
expect(user).to eq(nil)
end
end
end
end
Ora, quando si tenta di eseguire il test utilizzando rspec spec/api/users_spec.rb
I ottenere:
continuo a ricevere questo errore:
Failure/Error: user = build(:user)
ArgumentError:
Factory not registered: user
Qualsiasi aiuto sarebbe apprezzato visto che ho lottato per questo.
Ahh! bello vedere alcune specifiche ,, :) –
Anche se potrebbe essere possibile. È discutibile se dovresti condividere le specifiche. Dovresti usare solo ciò che la gemma fornisce. E le specifiche dovrebbero essere per la tua applicazione, quindi non dovresti aver bisogno delle fabbriche. –