Dan*_*G2k 5 rspec ruby-on-rails
我正在尝试做一些看似简单但事实证明相当困难的事情。
我想使用 RSpec 为放在libRails Engine 目录中的类编写测试。
这正是我正在使用的步骤:
rails plugin new mygem -T --mountable --full --dummy-path=spec/dummy
Run Code Online (Sandbox Code Playgroud)
然后我cd mygem; vim mygem.gemspec
我将以下行添加到 mygem.gemspec 中:
s.add_development_dependency "rspec-rails"
Run Code Online (Sandbox Code Playgroud)
我跑bundle install; rails generate rspec:install
然后我编辑~/mygem/lib/mygem/engine.rb添加以下内容:
module Mygem
class Engine < ::Rails::Engine
isolate_namespace Mygem
config.generators do |g|
g.test_framework :rspec
end
end
end
Run Code Online (Sandbox Code Playgroud)
我在 lib 目录中创建一个非常简单的类,~/mygem/lib/mygem/something.rb
并添加以下内容:
module Mygem
class Something
def hi
"hi"
end
end
end
Run Code Online (Sandbox Code Playgroud)
创建测试文件~/mygem/spec/something_spec.rb
然后添加以下内容:
require 'rails_helper'
describe Mygem::Something do
it 'says hi' do
s = Mygem::Something.new
expect(s.hi).to eq('hi')
end
end
Run Code Online (Sandbox Code Playgroud)
繁荣,我得到以下输出:
rspec
~/Documents/mygem/spec/rails_helper.rb:3:in `require': cannot load such file -- ~/Documents/mygem/config/environment (LoadError)
from ~/Documents/mygem/spec/rails_helper.rb:3:in `<top (required)>'
from ~/Documents/mygem/spec/something_spec.rb:1:in `require'
from ~/Documents/mygem/spec/something_spec.rb:1:in `<top (required)>'
from ~/.rvm/gems/ruby-2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1327:in `load' from ~/.rvm/gems/ruby-2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1327:in `block in load_spec_files'
from ~/.rvm/gems/ruby-2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1325:in `each'
from ~/.rvm/gems/ruby-2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/configuration.rb:1325:in `load_spec_files'
from ~/.rvm/gems/ruby-2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:102:in `setup'
from ~/.rvm/gems/ruby-2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:88:in `run'
from ~/.rvm/gems/ruby-2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:73:in `run'
from ~/.rvm/gems/ruby-2.2.2/gems/rspec-core-3.3.2/lib/rspec/core/runner.rb:41:in `invoke'
from ~/.rvm/gems/ruby-2.2.2/gems/rspec-core-3.3.2/exe/rspec:4:in `<top (required)>'
from ~/.rvm/gems/ruby-2.2.2/bin/rspec:23:in `load'
from ~/.rvm/gems/ruby-2.2.2/bin/rspec:23:in `<main>'
from ~/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `eval'
from ~/.rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `<main>'
Run Code Online (Sandbox Code Playgroud)
关于我可能做错了什么有什么建议吗?
提前致谢!
看起来您的rails_helper 正在寻找要加载的environment.rb 文件,而Rails 引擎中不存在该文件。然而,它确实存在于您的虚拟应用程序中,这就是 RSpec 运行的对象。
尝试将其添加到rails_helper文件的顶部:
require File.expand_path("../dummy/config/environment.rb", __FILE__)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4350 次 |
| 最近记录: |