Skip to content

Loading fixture in a before :context raise an exception #1201

Closed
@mdesantis

Description

@mdesantis

Loading fixture in a before :context raise an exception:

NoMethodError:
  undefined method `[]' for nil:NilClass
# /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/activerecord-4.1.6/lib/active_record/fixtures.rb:897:in `block (3 levels) in setup_fixture_accessors'

I created a Rails app in order to reproduce it: https://github.com/mdesantis/rspec-rails-issue-1201.

Environment: Ruby 2.1.3, Rails 4.1.6, rspec-rails 3.1.0

Failing test: (spec/models/widget_spec.rb):

require 'rails_helper'

RSpec.describe Widget, type: :model do
  fixtures :widgets

  describe 'fixture loaded in a before context' do
    before :context do
      widgets :a
    end

    it 'works' do
    end
  end
end

This is the specs run output:

$ rspec -b
F

Failures:

  1) Widget fixture loaded in a before context works
     Failure/Error: widgets :a
     NoMethodError:
       undefined method `[]' for nil:NilClass
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/activerecord-4.1.6/lib/active_record/fixtures.rb:897:in `block (3 levels) in setup_fixture_accessors'
     # ./spec/models/widget_spec.rb:8:in `block (3 levels) in <top (required)>'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/hooks.rb:350:in `instance_exec'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/hooks.rb:350:in `run'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/hooks.rb:459:in `run'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/hooks.rb:500:in `run'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:426:in `block in run_before_context_hooks'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/memoized_helpers.rb:141:in `block in isolate_for_context_hook'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/memoized_helpers.rb:137:in `instance_exec'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/memoized_helpers.rb:137:in `isolate_for_context_hook'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:425:in `run_before_context_hooks'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:452:in `run'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in `block in run'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in `map'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/example_group.rb:454:in `run'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:111:in `block (2 levels) in run_specs'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:111:in `map'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:111:in `block in run_specs'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/reporter.rb:53:in `report'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:107:in `run_specs'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:85:in `run'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:69:in `run'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/lib/rspec/core/runner.rb:37:in `invoke'
     # /home/mdesantis/.rbenv/versions/2.1.3/lib/ruby/gems/2.1.0/gems/rspec-core-3.1.7/exe/rspec:4:in `<top (required)>'
     # /home/mdesantis/.rbenv/versions/2.1.3/bin/rspec:23:in `load'
     # /home/mdesantis/.rbenv/versions/2.1.3/bin/rspec:23:in `<main>'
     # /home/mdesantis/.rbenv/versions/2.1.3/bin/ruby_executable_hooks:15:in `eval'
     # /home/mdesantis/.rbenv/versions/2.1.3/bin/ruby_executable_hooks:15:in `<main>'

Finished in 0.0012 seconds (files took 3.14 seconds to load)
1 example, 1 failure

Failed examples:

rspec ./spec/models/widget_spec.rb:11 # Widget fixture loaded in a before context works

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions