【发布时间】:2015-10-20 10:16:07
【问题描述】:
我有一个包含一些工厂的宝石。宝石看起来像:
.
├── 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
现在我通过添加类似gem 'core', git: 'https://url.git' 的东西在另一个Ruby 项目(Grape)中使用gem。
现在一切正常,因为我可以使用 Grape 项目中的 User 模型。
但是我想使用工厂 (users),这样我就可以为 Grape 项目编写进一步的集成测试。
在 Grape 项目中,spec_helper.rb 看起来像:
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
现在我的测试“users_spec.rb”看起来像:
require 'spec_helper'
describe App::UsersController do
include Rack::Test::Methods
def app
App::API
end
describe "/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
现在,当我尝试使用 rspec spec/api/users_spec.rb 运行测试时,我得到:
我不断收到此错误:
Failure/Error: user = build(:user)
ArgumentError:
Factory not registered: user
任何帮助将不胜感激,因为我一直在为此而苦苦挣扎。
【问题讨论】:
-
啊!很高兴看到一些规格,,:)
-
虽然有可能。您是否应该分享规格是值得怀疑的。您应该只使用 gem 提供的内容。并且规格应该适合您的应用程序,因此您不需要工厂。
标签: ruby-on-rails ruby rspec gem factory-bot