Rspec - undefined method 'let'

2019-04-18 08:52发布

问题:

This is my rspec file:

require 'spec_helper'

describe "Birds" do
  before { visit birds_path }
  it "should have the right title" do
    expect(page).to have_content("Approved Birds")
  end
  it "should contain the bird's name, genus, species" do
    let(:bird) { FactoryGirl.create(:bird) }
    expect(page).to have_content("#{bird.name}")
    expect(page).to have_content("#{bird.genus}")
    expect(page).to have_content("#{bird.species}")
  end
end

When I run it, I get the following error:

Failure/Error: let(:bird) { FactoryGirl.create(:bird) }
 NoMethodError:
   undefined method `let' for #<RSpec::Core::ExampleGroup::Nested_1:0xad87f84>

My Gemfile has both 'rspec-rails' and 'capybara' gems. Anyone have any idea on how to fix this? Thanks

回答1:

describe "Birds" do
  let(:bird) { FactoryGirl.create(:bird) }

you should never have a let block inside of a it block. It should be called from within a describe



回答2:

let is only defined within describe. You've used it within it