undefined method get

View: New views
3 Messages — Rating Filter:   Alert me  

undefined method get

by wbsmith83@gmail.com :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

So here's the deal. Was using rack-test in rspec, cause I like passing
paths instead of an action name, but it doesn't have access to the
session, flash, cookies, etc. So I tried to switch to normal rspec and
here's what I get (gist is working for me, so just pasting here)

# error

1)
NoMethodError in 'PagesController should get the home page'
undefined method `get' for
#<ActiveSupport::TestCase::Subclass_1:0x401648c>
./spec/functional/public/pages_controller_spec.rb:5:

# spec

require File.join(File.dirname(__FILE__),'..','..','spec_helper')

describe PagesController do
  it "should get the home page" do
    get 'home'
    response.should be_redirect
  end
end

# controller

class PagesController < ApplicationController
  def home
    render :layout => false
  end
end

# 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.dirname(__FILE__) + "/../config/environment"
  require 'spec/autorun'
  require 'spec/rails'
  require 'faker'
  require 'nokogiri'

  Spec::Runner.configure do |config|
    config.before(:all) do
      DataMapper.auto_migrate!
      ActionMailer::Base.delivery_method = :test
      ActionMailer::Base.perform_deliveries = true
      ActionMailer::Base.deliveries = []

    end

    config.before do
      @time_now = Time.now
      Time.stub!(:now).and_return(@time_now)

      def emails; ActionMailer::Base.deliveries end

      emails.clear

      repository do |r|
        transaction = DataMapper::Transaction.new(r)
        transaction.begin
        r.adapter.push_transaction(transaction)
      end
    end

    config.after do
      repository do |r|
        adapter = r.adapter
        while adapter.current_transaction
          adapter.current_transaction.rollback
          adapter.pop_transaction
        end
      end
    end
  end

end

Spork.each_run do
  # This code will be run each time you run your specs.
  Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each{|helper| require
helper}
  require File.dirname(__FILE__) / 'fixtures'
end
_______________________________________________
rspec-users mailing list
rspec-users@...
http://rubyforge.org/mailman/listinfo/rspec-users

Re: undefined method get

by David Chelimsky-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Oct 29, 2009, at 6:04 PM, BrianTheCoder wrote:

> So here's the deal. Was using rack-test in rspec, cause I like passing
> paths instead of an action name, but it doesn't have access to the
> session, flash, cookies, etc. So I tried to switch to normal rspec and
> here's what I get (gist is working for me, so just pasting here)
>
> # error
>
> 1)
> NoMethodError in 'PagesController should get the home page'
> undefined method `get' for
> #<ActiveSupport::TestCase::Subclass_1:0x401648c>
> ./spec/functional/public/pages_controller_spec.rb:5:

For rspec to know that you're writing a controller spec and provide  
the services you're looking for (like the get() method), you need one  
of two conditions:

1. the file lives in the ./spec/controllers/ directory or any of its  
subdirectories

2. explicit declaration:

describe PagesController, :type => :controller do
   ...
end

HTH,
David

>
> # spec
>
> require File.join(File.dirname(__FILE__),'..','..','spec_helper')
>
> describe PagesController do
>  it "should get the home page" do
>    get 'home'
>    response.should be_redirect
>  end
> end
>
> # controller
>
> class PagesController < ApplicationController
>  def home
>    render :layout => false
>  end
> end
>
> # 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.dirname(__FILE__) + "/../config/environment"
>  require 'spec/autorun'
>  require 'spec/rails'
>  require 'faker'
>  require 'nokogiri'
>
>  Spec::Runner.configure do |config|
>    config.before(:all) do
>      DataMapper.auto_migrate!
>      ActionMailer::Base.delivery_method = :test
>      ActionMailer::Base.perform_deliveries = true
>      ActionMailer::Base.deliveries = []
>
>    end
>
>    config.before do
>      @time_now = Time.now
>      Time.stub!(:now).and_return(@time_now)
>
>      def emails; ActionMailer::Base.deliveries end
>
>      emails.clear
>
>      repository do |r|
>        transaction = DataMapper::Transaction.new(r)
>        transaction.begin
>        r.adapter.push_transaction(transaction)
>      end
>    end
>
>    config.after do
>      repository do |r|
>        adapter = r.adapter
>        while adapter.current_transaction
>          adapter.current_transaction.rollback
>          adapter.pop_transaction
>        end
>      end
>    end
>  end
>
> end
>
> Spork.each_run do
>  # This code will be run each time you run your specs.
>  Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each{|helper| require
> helper}
>  require File.dirname(__FILE__) / 'fixtures'
> end
> _______________________________________________
> rspec-users mailing list
> rspec-users@...
> http://rubyforge.org/mailman/listinfo/rspec-users

Cheers,
David



_______________________________________________
rspec-users mailing list
rspec-users@...
http://rubyforge.org/mailman/listinfo/rspec-users

Re: undefined method get

by wbsmith83@gmail.com :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks. I ended up just instantiating the rails integration session
and operating off of that. Not the prettiest, but it does what I want
it to. Also apparently the ActionController::Response breaks some
methods that work on Rack::Response, go rails! *sarcasm*

On Oct 31, 8:43 am, David Chelimsky <dchelim...@.com> wrote:

> On Oct 29, 2009, at 6:04 PM, BrianTheCoder wrote:
>
> > So here's the deal. Was using rack-test in rspec, cause I like passing
> > paths instead of an action name, but it doesn't have access to the
> > session, flash, cookies, etc. So I tried to switch to normal rspec and
> > here's what I get (gist is working for me, so just pasting here)
>
> > # error
>
> > 1)
> > NoMethodError in 'PagesController should get the home page'
> > undefined method `get' for
> > #<ActiveSupport::TestCase::Subclass_1:0x401648c>
> > ./spec/functional/public/pages_controller_spec.rb:5:
>
> For rspec to know that you're writing a controller spec and provide  
> the services you're looking for (like the get() method), you need one  
> of two conditions:
>
> 1. the file lives in the ./spec/controllers/ directory or any of its  
> subdirectories
>
> 2. explicit declaration:
>
> describe PagesController, :type => :controller do
>    ...
> end
>
> HTH,
> David
>
>
>
>
>
>
>
> > # spec
>
> > require File.join(File.dirname(__FILE__),'..','..','spec_helper')
>
> > describe PagesController do
> >  it "should get the home page" do
> >    get 'home'
> >    response.should be_redirect
> >  end
> > end
>
> > # controller
>
> > class PagesController < ApplicationController
> >  def home
> >    render :layout => false
> >  end
> > end
>
> > # 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.dirname(__FILE__) + "/../config/environment"
> >  require 'spec/autorun'
> >  require 'spec/rails'
> >  require 'faker'
> >  require 'nokogiri'
>
> >  Spec::Runner.configure do |config|
> >    config.before(:all) do
> >      DataMapper.auto_migrate!
> >      ActionMailer::Base.delivery_method = :test
> >      ActionMailer::Base.perform_deliveries = true
> >      ActionMailer::Base.deliveries = []
>
> >    end
>
> >    config.before do
> >      @time_now = Time.now
> >      Time.stub!(:now).and_return(@time_now)
>
> >      def emails; ActionMailer::Base.deliveries end
>
> >      emails.clear
>
> >      repository do |r|
> >        transaction = DataMapper::Transaction.new(r)
> >        transaction.begin
> >        r.adapter.push_transaction(transaction)
> >      end
> >    end
>
> >    config.after do
> >      repository do |r|
> >        adapter = r.adapter
> >        while adapter.current_transaction
> >          adapter.current_transaction.rollback
> >          adapter.pop_transaction
> >        end
> >      end
> >    end
> >  end
>
> > end
>
> > Spork.each_run do
> >  # This code will be run each time you run your specs.
> >  Dir[File.dirname(__FILE__) + '/helpers/*.rb'].each{|helper| require
> > helper}
> >  require File.dirname(__FILE__) / 'fixtures'
> > end
> > _______________________________________________
> > rspec-users mailing list
> > rspec-us...@...
> >http://rubyforge.org/mailman/listinfo/rspec-users
>
> Cheers,
> David
>
> _______________________________________________
> rspec-users mailing list
> rspec-us...@...://rubyforge.org/mailman/listinfo/rspec-users
_______________________________________________
rspec-users mailing list
rspec-users@...
http://rubyforge.org/mailman/listinfo/rspec-users