我正在使用spork运行rspec,我无法在lib中获取文件以在连续的rspec运行时重新加载.我试过在'Spork.each_run'中要求提供文件
我没有收到任何回复,所以我会尝试进一步解释.我的Rails应用程序中有以下文件:
要运行测试,首先我开始spork然后运行'rspec spec/lib/car_spec.rb'
RSpec没有看到我对我的Car类的更改,除非我重新启动spork.
有帮助吗?
我上线了:
我的Rails 3.1应用程序中有以下spec_helper.rb文件.我正在使用Spork加载环境以便进行测试.在将Spork加入混合物之前,我的所有测试都有效.添加spork之后,测试数据库在测试运行之间没有得到正确的清除,这导致了我的一些期望.
按照其他说明,我将database_cleaner添加到下面列出的代码中; 但是,现在,开发数据库以及测试数据库正在被清理.ENV ["RAILS_ENV"]呼叫在此呼叫期间返回测试.
有没有办法显式限制对DatabaseCleaner.clean_with(:truncation)的调用只影响测试数据库?
require 'rubygems'
require 'spork'
Spork.prefork do
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'shoulda/matchers/integrations/rspec'
require 'database_cleaner'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.mock_with :mocha
config.formatter = 'documentation'
config.use_transactional_fixtures = true
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
end
Spork.each_run do
FactoryGirl.reload
end
Run Code Online (Sandbox Code Playgroud)
更新:这是我的database.yml文件
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: …Run Code Online (Sandbox Code Playgroud) 看起来我的助手(有时是我的模特)在每次使用Spork时都没有重新加载.我应该把什么放进我的"Spork.each_run"区块?
我刚刚安装了SimpleCov gem以在我的Rails 3.2.6应用程序上生成代码覆盖率报告,它与RSpec一起工作很好,而不是Spork.我可以通过运行获得所需的正确报告rspec --no-drb spec/,但我也想让它们使用Spork运行rspec spec/.
鉴于有人在这方面取得了成功,我的设置似乎有误.我已经阅读了设置说明以及声称为Spork用户修复的GitHub问题,但仍然没有运气.我想知道是否有人可以提供他们可以用作参考的工作规范/ spec_helper.rb文件的完整示例,因为广泛的谷歌搜索只发现了片段.根据其他网站的建议,我尝试将config.cache_classesin config/environments/test.rb从默认值更改true为falseto !(ENV['DRB'] == 'true'),没有运气.
作为参考,这是我的设置方式:
的Gemfile
group :development, :test do
# ...
gem 'rspec-rails', '2.10.1'
end
group :test do
# ...
gem 'spork', '0.9.0'
gem 'simplecov', '0.6.4', require: false
end
Run Code Online (Sandbox Code Playgroud)
的.spec
--colour
--drb
Run Code Online (Sandbox Code Playgroud)
spec/spec_helper.rb(根据GitHub问题更改)
require 'simplecov'
SimpleCov.start 'rails'
require 'rubygems'
require 'spork'
Spork.prefork do
unless ENV['DRB']
require 'simplecov'
SimpleCov.start 'rails' …Run Code Online (Sandbox Code Playgroud) 我在rails 3.0环境中运行rspec.我们刚刚切换到在内存数据库中使用sqlite3进行测试.
要使其工作,您需要在每次运行时加载架构.
这样做的问题在于您从架构加载中获得了大量输出.
根据这一点,似乎Spork以某种方式捕获此输出.所以无论你做什么(silence_stream),架构加载的输出仍将继续通过.
有没有办法在spork中保持沉默?输出会减慢整个测试周期并使其非常烦人.
当试图在database_cleaner的GitHub页面上关注示例时,我从RSpec遇到以下错误:
ActiveRecord::StatementInvalid:
SQLite3::SQLException: cannot start a transaction within a transaction: begin transaction
Run Code Online (Sandbox Code Playgroud)
spec_helper.rb中使用的配置是:
require 'spork'
require 'database_cleaner'
Spork.prefork do
# .. snip
RSpec.configure do |config|
# .. snip
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
end
Spork.each_run do
end
Run Code Online (Sandbox Code Playgroud) 我在Ubuntu 12.04的rails 3.2.11项目上运行了guard-spork.
我从railstutorial.org获得了配置.
Spork开始,然后后卫说它找不到spork开始,等待30秒,然后60秒,然后工作.
它可以工作,但每次都会出错.只是想知道我做错了什么.
如何删除Test :: Unit的钩子?
错误信息:
16:31:58 - INFO - Starting Spork for RSpec, Test::Unit
Using RSpec
Preloading Rails environment
Couldn't find a supported test framework that begins with 'testunit'
Supported test frameworks:
( ) Cucumber
(*) RSpec
Legend: ( ) - not detected in project (*) - detected
Loading Spork.prefork block...
Rack::File headers parameter replaces cache_control after Rack 1.5.
Spork is ready and listening on 8989!
16:32:28 - ERROR - Could not start …Run Code Online (Sandbox Code Playgroud) 如果我在rails项目中,使用rails.vim进行编辑,我该如何获得:通过Spork运行规范?
它主要只是一个问题:通过"-o"标志Rake知道项目的specs/spec.opts文件?
我正在尝试使用Spork将Factory Girl用于RSpec.每当我在没有spork的情况下运行测试时,一切都会通过,但是当我使用Spork运行它时,所有试图创建依赖于另一个工厂的工厂实例的测试都会失败.例如:
3) Invitation has a correctly formed body
Failure/Error: request = FactoryGirl.create(:request, ....)
NoMethodError:
undefined method `user=' for #<Request:0x007f86b6a87890>
Run Code Online (Sandbox Code Playgroud)
我的factories.rb代码看起来大致如此
FactoryGirl.define do
factory :user do
sequence(:first_name) { |n| "first_name#{n}" }
sequence(:last_name) { |n| "last_name#{n}" }
end
factory :request do
association :user, :factory => :user, :is_walker => false
end
end
Run Code Online (Sandbox Code Playgroud)
我的代码似乎只有在存在关联时才会中断,然后它会尝试在上面调用setter :user.为什么会发生这种情况?
这是我正在使用的版本
gem 'rails', '3.0.7'
gem 'rspec-rails', '2.6.1'
gem 'spork', '0.9.0.rc5'
gem 'factory_girl_rails', '1.0'
Run Code Online (Sandbox Code Playgroud) 我正在运行spork和后卫,我的RSpec测试都运行正常.为了加快测试速度,我可以使用放在.rspec文件中的标签成功过滤我的RSpec测试.
.rspec
--colour
--debug
--tag focus
--tag now
Run Code Online (Sandbox Code Playgroud)
不幸的是,虽然我无法过滤黄瓜标签.黄瓜每次运行时都会运行所有内容或只运行更改的文件.
我怎样才能让黄瓜/ spork/guard尊重像@ wip,@ no等标签并只运行那些测试?有没有相当于.rspec黄瓜标签的文件?
spork ×10
rspec ×7
guard ×2
sqlite ×2
cucumber ×1
factory-bot ×1
helpers ×1
rspec-rails ×1
ruby ×1
sqlite3-ruby ×1
testunit ×1
vim ×1