3

Rails アプリで PhantomJS を使用して、AJAX 経由で送信されたフォームの統合テストを行っています。私のテスト スイートは、最初の数回は緑色で実行され、その後、散発的に表示される次のエラーに遭遇します。

1) Admin update admin homepage should allow the admin to change a bicycle's listing to approved
 Failure/Error: Unable to find matching line from backtrace
 ActiveRecord::StatementInvalid:
   PG::UnableToSend: : ROLLBACK
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `exec'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `block in execute'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract_adapter.rb:425:in `block in log'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activesupport-4.0.0/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract_adapter.rb:420:in `log'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:127:in `execute'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql/database_statements.rb:218:in `rollback_db_transaction'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/transaction.rb:171:in `perform_rollback'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/transaction.rb:110:in `rollback'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/abstract/database_statements.rb:240:in `rollback_transaction'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/fixtures.rb:883:in `block in teardown_fixtures'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/fixtures.rb:882:in `each'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/fixtures.rb:882:in `teardown_fixtures'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/fixtures.rb:718:in `after_teardown'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-rails-2.14.0/lib/rspec/rails/adapters.rb:52:in `block (2 levels) in <module:MiniTestLifecycleAdapter>'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/extensions/instance_eval_with_args.rb:16:in `instance_exec'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/extensions/instance_eval_with_args.rb:16:in `instance_eval_with_args'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/example.rb:247:in `instance_eval_with_args'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:106:in `block (2 levels) in run'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:108:in `call'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:108:in `run'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/hooks.rb:446:in `run_hook'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:340:in `run_around_each_hooks'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/example.rb:256:in `with_around_each_hooks'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/example.rb:111:in `run'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:390:in `block in run_examples'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:386:in `map'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:386:in `run_examples'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:371:in `run'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:372:in `block in run'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:372:in `map'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/example_group.rb:372:in `run'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/command_line.rb:28:in `block (2 levels) in run'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/command_line.rb:28:in `map'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/command_line.rb:28:in `block in run'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/reporter.rb:58:in `report'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/command_line.rb:25:in `run'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/runner.rb:80:in `run'
 # /Users/epicodus/.gem/ruby/2.0.0/gems/rspec-core-2.14.7/lib/rspec/core/runner.rb:17:in `block in autorun'

2) Admin update admin homepage should text "1 bicycle currently pending"
 Failure/Error: Unable to find matching line from backtrace
 ActiveRecord::RecordNotFound:
   Couldn't find Bicycle with id=515
 # ./app/controllers/bicycles_controller.rb:42:in `update'

3) User pages after being redirected to the sign in page, they are redirected back
 Failure/Error: Unable to find matching line from backtrace
 NoMethodError:
   undefined method `cmd_tuples' for nil:NilClass
 # ./app/controllers/bicycles_controller.rb:52:in `block (2 levels) in update'
 # ./app/controllers/bicycles_controller.rb:43:in `update'

実行すると、スイートを再びグリーンで実行できます

rake db:drop
rake db:create
rake db:schema:load
rake db:test:prepare

しかし、その後すぐに問題が解決しません。この機能は、開発中に確実に機能します。ここに私の宝石ファイルがあります:

source 'https://rubygems.org'
gem 'rails', '4.0.0'
gem 'pg'
gem 'sass-rails', '~> 4.0.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'jbuilder', '~> 1.2'
gem 'paperclip'
gem 'devise'
gem 'bootstrap-sass', :git => 'https://github.com/thomas-mcdonald/bootstrap-sass'
gem 'textacular', "~> 3.0", require: 'textacular/rails'
gem 'will_paginate', '3.0.4'
gem 'will_paginate-bootstrap'
gem 'jquery-ui-rails'
gem "cancan"
gem 'recaptcha-mailhide'

group :production do
  gem 'lograge'
  gem 'rails_12factor'
end

group :development do
  gem 'better_errors'
  gem 'binding_of_caller'
  gem 'quiet_assets'
end

group :test do
  gem 'spork-rails'
  gem 'capybara'
  gem 'shoulda-matchers'
  gem 'launchy'
  gem 'poltergeist'
  gem 'database_cleaner'
end

group :test, :development do
  gem 'rspec-rails'
  gem 'pry'
  gem 'factory_girl_rails'
end
4

0 に答える 0