使用Spork时如何加载Machinist的蓝图?
宝石:
我在每次验收测试中都会收到此错误:
Machinist::NoBlueprintError:
No master blueprint defined for class School
Run Code Online (Sandbox Code Playgroud)
所有测试都失败了,因为它没有找到任何蓝图.我在V2上的一些错误(我仍然得到几个没有主蓝图..),但我也得到另一个错误:
Professor Create a new professor
Failure/Error: click_link("Profesores")
RangeError:
0x000000821461e4 is recycled object
Run Code Online (Sandbox Code Playgroud)
我在测试环境中得到了config.cache_classes = false.
两个spec_helper版本:
我正在尝试配置自动测试,以便当我运行我的测试套件并且我有一个失败的测试时,自动测试停止测试并等待我再次测试之前进行更改.使用我当前的配置,当遇到失败的测试时,自动测试会不断地进行测试,这使得处理时有点麻烦(每次我遇到测试失败时都必须键入终端并停止自动测试服务器).
我正在使用RSpec,Zentest和Spork开发rails应用程序.
相关宝石版本:
autotest (4.4.6)
rspec (2.6.0)
rspec-core (2.6.4)
rspec-expectations (2.6.0)
rspec-mocks (2.6.0)
rspec-rails (2.6.1)
spork (0.9.0.rc8)
ZenTest (4.5.0)
Run Code Online (Sandbox Code Playgroud)
我的.autotest文件:
module Autotest::Notify
def self.notify title, msg, img, pri='low', time=3000
`notify-send -i #{img} -u #{pri} -t #{time} '#{msg}'`
end
Autotest.add_hook :ran_command do |autotest|
results = [autotest.results].flatten.join("\n")
output = results.slice(/(\d+)\s+examples?,\s*(\d+)\s+failures?(,\s*(\d+)\s+pending)?/)
folder = "~/.autotest_icons/"
if output =~ /[1-9]\d*\sfailures?/
notify "FAIL:", "#{output}", folder+"failed.png", 'critical', 10000
elsif output =~ /[1-9]\d*\spending?/
notify "PENDING:", "#{output}", folder+"pending.png", 'normal', 10000
else
notify "PASS:", "#{output}", folder+"passed.png"
end
end
end
Run Code Online (Sandbox Code Playgroud)
注意:我的.autotest文件的大部分内容都是让linux中的弹出窗口显示我的测试是通过还是失败. …
我在黄瓜和数据库事务方面遇到了一些问题 - 具体来说,当我运行测试套件时,之后不会清理数据库事务.
我正在使用spork,postgres运行rails 3.1.
最初feature/support/env.rb设置为使用database_cleaner,但在每次调用db时始终出现以下错误:
没有指定数据库.缺少参数:数据库.(ArgumentError)/Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/postgresql_adapter.rb:22:in
postgresql_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:292:innew_connection'/ Users/john /.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:302:incheckout_new_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:254:inblock(2级)结账时'/ Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:250:loop' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:250:inin checkout'/ Users/john /. rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/monitor.rb:201:inmon_synchronize' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:249:incheckout' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/ activerecord -3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:151:inconnection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/abstract/connection_pool.rb:388:inretrieve_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/activerecord- 3.1.0. rc4/lib/active_record/connection_adapters/abstract/connection_specification.rb:107:inretrieve_connection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/cucumber-rails-1.0.2/lib/cucumber/rails/hooks/active_record.rb:7:inconnection' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/ active_record /反 action.rb:17:inclean' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/base.rb:77:incleanblock in clean' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/configuration.rb:56:in'/Users/ john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/configuration.rb:56:in each'/ Users /john/.rvm/gems/ruby-1.9.2-p290/gems/database_cleaner-0.6.7/lib/database_cleaner/configuration.rb:56:inclean' /Users/john/.rvm/gems/ruby-1.9.2-p290/gems/cucumber-rails-1.0.2/lib/cucumber/rails/hooks/database_cleaner.rb:9:in'之后'
我试过恢复常规交易,但没有快乐.我可以通过控制台(黄瓜环境)访问数据库并创建/删除/检索记录没有问题.下面添加了config/database.yml,features/support/env.rb,config/environments/cucumber.rb和rspec/spec_helper.rb文件.任何建议都非常感激 - 这个让我难过了一段时间:
CONFIG/database.yml的
default: &defaults
adapter: postgresql
username: rails_dev
password: foobar
development:
<<: *defaults
database: fcct_d
test: &test
<<: *defaults
database: fcct_t …Run Code Online (Sandbox Code Playgroud) 我有一个spork gem问题.每次我运行spork命令时都会遇到这个长错误:
evan@TheBeast-Computer:~/rails_projects/sample_app$ spork
Using RSpec
Preloading Rails environment
Loading Spork.prefork block...
cannot load such file -- /home/evan/rails_projects/sample_app/spec_helper (LoadError)
/home/evan/rails_projects/sample_app/spec/spec_helper.rb:57:in `require_relative'
/home/evan/rails_projects/sample_app/spec/spec_helper.rb:57:in `block in <top (required)>'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork.rb:24:in `prefork'
/home/evan/rails_projects/sample_app/spec/spec_helper.rb:6:in `<top (required)>'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.5/lib/active_support/dependencies.rb:245:in `load'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.5/lib/active_support/dependencies.rb:245:in `block in load'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.5/lib/active_support/dependencies.rb:236:in `load_dependency'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.5/lib/active_support/dependencies.rb:245:in `load'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/test_framework.rb:138:in `block (2 levels) in preload'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/app_framework/rails.rb:8:in `preload'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/test_framework.rb:134:in `block in preload'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork.rb:62:in `exec_prefork'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/test_framework.rb:120:in `preload'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/run_strategy/forking.rb:25:in `preload'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/runner.rb:74:in `run'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/lib/spork/runner.rb:10:in `run'
/home/evan/.rvm/gems/ruby-1.9.3-p194/gems/spork-0.9.2/bin/spork:10:in `<top (required)>'
/home/evan/.rvm/gems/ruby-1.9.3-p194/bin/spork:23:in `load'
/home/evan/.rvm/gems/ruby-1.9.3-p194/bin/spork:23:in `<main>'
Run Code Online (Sandbox Code Playgroud)
这是我的Gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.5'
gem 'sqlite3'
group :assets …Run Code Online (Sandbox Code Playgroud) 我正在使用以下技巧(来自http://mikbe.tk/2011/02/10/blazingly-fast-tests/)来确保模型在使用Spork的每个RSpec运行时重新加载:
Spork.each_run do
load "#{Rails.root}/config/routes.rb"
Dir["#{Rails.root}/app/**/*.rb"].each { |f| load f }
# .....
end
Run Code Online (Sandbox Code Playgroud)
但是,每次运行测试时都会出现以下警告:
/myproject/app/models/model.rb:36: warning: already initialized constant CONFIGURABLE
我可以通过以下方式避免:
if !defined?(A_CONSTANT)
在每个常数之后,这看起来并不正确(但它确实有效).有关如何使其正常工作的任何建议?(即我的模型仍将在测试中重新加载,但我不必将if每个常量定义放在后面.)
我目前正在使用Spork with Guard,Rspec和Cucumber.我想转移到Spring,但找不到任何需要更改的文档.
具体来说,我很好奇我是否需要更改我的:
require 'spork'
Spork.prefork do
# ...
end
Spork.each_run do
# ...
end
Run Code Online (Sandbox Code Playgroud)
...有类似的东西:
require 'spring'
Spring.prefork do
# ...
end
Spring.each_run do
# ...
end
Run Code Online (Sandbox Code Playgroud)
但是,我知道没有,Spring.prefork因为文档说的是这样.那么我应该简单地删除引用Spork或者我需要用某些东西替换它们吗?
我正在使用Ruby 1.9.2,Rails 3.1,Rspec,Postgres和Spork,但我无法让它们一起玩得很好.
第一次运行规范(Spork在后台运行)运行正常.但是,当我第二次运行规范时,它失败了:
Failure/Error: Unable to find matching line from backtrace
PGError:
no connection to the server
# /Users/tom/.rvm/gems/ruby-1.9.2-p180@grapi/gems/activerecord-3.1.0.rc4/lib/active_record/connection_adapters/postgresql_adapter.rb:272:in `exec'
etc....
Run Code Online (Sandbox Code Playgroud)
任何提示赞赏!
我在使用Rails 3.2 + Spork时遇到了麻烦.当我运行时,bundle exec spork我收到错误:
/usr/local/rvm/gems/ruby-1.9.2-p290@rails-3.2.1/bin/spork:19:in `load': no such file to load -- /usr/local/rvm/gems/ruby-1.9.2-p290@rails-3.2.1/gems/spork-1.0.0rc2/bin/spork (LoadError)
from /usr/local/rvm/gems/ruby-1.9.2-p290@rails-3.2.1/bin/spork:19:in `<main>'
Run Code Online (Sandbox Code Playgroud)
您可能已经注意到,我正在使用RVM来管理我的宝石.好几次,我都尝试在新的gemset中重新安装我的所有宝石.我没有运气.有没有其他人遇到这个?
我为我的Gemfile创建了一个要点:https://gist.github.com/1921929
我的包的要点:https: //gist.github.com/1925661
我需要帮助搞清楚为什么我的rspec测试运行缓慢.
我正在运行spork,guard和rspec.但是,似乎spork每次都重新初始化rails.我很难搞清楚如何调试此问题.我怀疑我使用的一些宝石是造成这种但没有证据的.
我认为它正在重装的原因是:
当我运行rails服务器时,我得到了这个警告(与SOLR gem有关)
运行所有规格
弃用警告:ActiveSupport :: Concern中的InstanceMethods模块将不再自动包含在内.请直接在Sunspot :: Rails :: SolrInstrumentation中定义实例方法.(从/home/dougt/replyinline/config/environment.rb:5调用)
这是我的spec_helper.rb
require 'rubygems'
require 'spork'
#uncomment the following line to use spork with the debugger
#require 'spork/ext/ruby-debug'
Spork.prefork do
# Loading more in this block will cause your tests to run faster. However,
# if you change any configuration or code from libraries loaded here, you'll
# need to restart spork for it take effect.
# This file is copied to spec/ when you run 'rails …Run Code Online (Sandbox Code Playgroud) 当我运行 rspec 进行测试时,出现以下错误:
无法加载此类文件 -- mocha/object (LoadError) 问题出在config.mock_with :mocha以下行:
这是我的spec_helper.rb:
require 'rubygems'
require 'spork'
Spork.prefork do
# Loading more in this block will cause your tests to run faster. However,
# if you change any configuration or code from libraries loaded here, you'll
# need to restart spork for it take effect.
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'capybara/rails'
require 'capybara/rspec'
#require 'spork/ext/ruby-debug'
# Requires supporting ruby files with custom matchers and macros, …Run Code Online (Sandbox Code Playgroud) spork ×10
rspec ×5
cucumber ×2
rspec-rails ×2
autotest ×1
constants ×1
guard ×1
rails-spring ×1
rspec2 ×1
ruby-mocha ×1
rvm ×1
testing ×1
zentest ×1