我已经阅读了有关如何在使用zeus的rails上获取rspec的所有建议。特别是,我在 spec / spec_helper.rb 中注释掉了“require'rspec / autorun'”:
# require 'rspec/autorun'
我在一个终端启动了宙斯:
zeus start
然后在另一个终端运行rspec:
zeus rspec spec / controllers / source_configs_controller_spec.rb
得到......什么都没有。没有输出,没有响应,nada - 只是把我转回命令行。但是,如果我在 spec_helper.rb 中取消注释要求'rspec / autorun',然后再次运行它,我会得到:
Failure/Error: post :create, {:account_id => @account.id, :source_config => valid_attributes.except(:account_id)}, {}
NoMethodError:
undefined method `post' for #<RSpec::Core::ExampleGroup::Nested_2::Nested_1::Nested_1:0x007fbdff3032d8>
有什么想法吗?我觉得我已经失去了更多的时间来解决这个问题,而不是我用更快的速度进行恢复......这太令人沮丧了。
答案 0 :(得分:1)
经过更多的挖掘和实验,看起来 spec_helper.rb 中的rr(模拟框架)是罪魁祸首。我有
RSpec.configure do |config|
config.mock_with :rr
#...
end
修复它:
在 Gemfile
中group :development, :test do
gem "rr", :require => false # important to specify ":require => false"
gem "rspec-rails"
# (any other appropriate gems)
end
在 spec_helper.rb
中require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
# vvvv NOTE: this is how you enable rr now
require 'rr'
#require 'rspec/autorun'
# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
# ## Mock Framework
#
# If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
#
# config.mock_with :mocha
# config.mock_with :flexmock
# vvvv NOTE: Make sure this line is commented out
# config.mock_with :rr
# ... other rspec config
end
很想听别人的想法 - 有更好的方法吗?
答案 1 :(得分:0)
所以我遇到了同样的问题并且使用了一些调试我发现测试正在运行,但是没有输出。
到目前为止,将config.reset
放在RSpec.configure
块的顶部是有效的。我从这里得到了这个想法:https://github.com/burke/zeus/issues/461从这里得到了这个想法:How can I configure rspec to show output with spork?
作为警告,第一个链接中的一条评论提到放config.reset
会产生不良副作用,但我还没有碰到任何......。