ruby-on-rails - 如何使用 RSPEC 集成正确设置或配置自定义 gem
问题描述
我正在做一个简单的 gem 并尝试将 rspec 添加到它。但是配置有问题:(
宝石文件
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gemspec
# gem "rails" # as requested
gem 'rspec-rails', '~> 3.7'
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'database_cleaner', '~> 1.5'
gem 'factory_girl_rails', '~> 4.5.0'
gem 'faker', :git => 'https://github.com/stympy/faker.git', :branch => 'master'
my_gem.gemspec
# coding: utf-8
lib = File.expand_path("../lib", __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require "my_gem/version"
Gem::Specification.new do |spec|
spec.name = "my_gem"
spec.version = MyGem::VERSION
spec.authors = ["Test Test"]
spec.email = ["test@gmail.com"]
....
....
spec.add_dependency "rails" # as requested
spec.add_development_dependency "bundler", "~> 1.16"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "rspec", "~> 3.0"
end
规范/spec_helper.rb
require 'bundler/setup'
Bundler.setup
require "my_gem"
RSpec.configure do |config|
# Enable flags like --only-failures and --next-failure
config.example_status_persistence_file_path = ".rspec_status"
# Disable RSpec exposing methods globally on `Module` and `main`
config.disable_monkey_patching!
# config.include FactoryGirl::Syntax::Methods
config.expect_with :rspec do |c|
c.syntax = :expect
end
end
test_spec.rb
require 'spec_helper'
RSpec.describe MyGem do
it "has a version number" do
expect(MyGem::VERSION).not_to be nil
end
end
lib/my_gem.rb
require "my_gem/version"
require 'my_gem/engine'
module MyGem
#....
end
lib/my_gem/engine.rb
require 'my_gem'
module MyGem
class Engine < Rails::Engine
isolate_namespace MyGem
config.generators do |g|
g.test_framework :rspec
g.fixture_replacement :factory_girl, :dir => 'spec/factories'
end
config.autoload_paths += Dir.glob(File.join(MyGem::Engine.root, 'app','controllers', '**/'))
end
end
lib/my_gem/version.rb
module MyGem
VERSION = "0.1.0"
end
但是运行...
bundle exec rspec spec/test_spec.rb
NameError:
uninitialized constant MyGem::Rails
# ./lib/mu_gem/engine.rb:4:in `<module:MyGem>'
请帮助如何正确设置/配置它和添加 Rspec 时的东西。谢谢!
解决方案
您在代码中引用Rails::Engine
,但您的依赖项中没有rails
gem。
推荐阅读
- javascript - 使用一系列链接制作多个 Axios 获取请求?
- spring-boot - 我们如何处理具有单个实体类的多个存储过程
- php - 如何使用 Laravel 列出该类别中的产品?
- node.js - 为什么不能在本地机器之外访问此端口?
- sql - 使用 SQL 列出表中的所有列
- mysql - 无法连接到 phpMyAdmin 中前缀下的数据库
- mysql - 如何进行大JOIN?
- google-bigquery - Bigquery 将大数据卸载到单个 GZIP 文件
- android - 从 Firebase 函数返回数据到 Android
- sql - 比较数据并返回不匹配的列名和数据