How to spec a Rails helper method

I’m trying to write specs for a helper method that I’m creating, but
my specs are failing to find the helper method

app/helpers/properties_helper.rb

module PropertiesHelper
def format_utilities(utilities)
end
end

spec/helpers/properties_helper_spec.rb

require File.expand_path(File.dirname(FILE) + ‘/…/spec_helper’)

describe PropertiesHelper do
describe ‘#format_utilities’ do
it ‘should format a utilities value’ do
format_utilities(nil).should == ‘Unknown’
end
end
end

The error that’s occuring is:

NoMethodError in ‘PropertiesHelper#format_utilities should format a
utilities value’
undefined method format_utilities' for #< Spec ::Rails::Example::HelperExampleGroup::Subclass_1::Subclass_1:0x22a121c> /Users/nick/src/housing-rentals/vendor/plugins/factories-and-workers/ lib/factories-and-workers/factory_builder.rb:36:in method_missing’
./spec/helpers/properties_helper_spec.rb:7:
script/spec:4:

As far as I can tell, my specs match what was recommended back in
March 2008 in this thread:
Testing helper methods in rspec - RSpec - Ruby-Forum

Any suggestions?
-Nick

On Fri, Nov 21, 2008 at 1:18 PM, Nick H. [email protected]
wrote:

require File.expand_path(File.dirname(FILE) + ‘/…/spec_helper’)

describe PropertiesHelper do
describe ‘#format_utilities’ do
it ‘should format a utilities value’ do
format_utilities(nil).should == ‘Unknown’
end
end
end

Try: helper.format_utilities

When describing a module RSpec will include that module into an object
accessible via the helper method. It used to work like you are
expressing your code, but no longer it does. :wink:

Zach

script/spec:4:
http://rubyforge.org/mailman/listinfo/rspec-users


Zach D.
http://www.continuousthinking.com

I’m not sure what version it was, but Rails helper modules are no longer
included implicitly in helper specs. [1]

You should rewrite your spec as:

describe PropertiesHelper do
describe ‘#format_utilities’ do
it ‘should format a utilities value’ do
helper.format_utilities(nil).should == ‘Unknown’
end
end
end

or

describe PropertiesHelper do
include PropertiesHelper
describe ‘#format_utilities’ do
it ‘should format a utilities value’ do
format_utilities(nil).should == ‘Unknown’
end
end
end

[1]
http://blog.davidchelimsky.net/2008/5/29/rspec-waving-bye-bye-to-implicit-module-inclusion

On 21 Nov 2008, at 18:18, Nick H. wrote:

require File.expand_path(File.dirname(FILE) + ‘/…/spec_helper’)

describe PropertiesHelper do
describe ‘#format_utilities’ do
it ‘should format a utilities value’ do
format_utilities(nil).should == ‘Unknown’
Here, try
helper.format_utilities(nil).should == ‘Unknown’
#<
Testing helper methods in rspec - RSpec - Ruby-Forum
I don’t know about that thread - I wasn’t using RSpec at the time, but
certainly the way I’ve always done it is use HelperExampleGroup.helper
to call the helper module. This is backed up by the docs:

http://rspec.info/documentation/rails/writing/helpers.html

HTH,
Matt

Have a look at the change to no longer implicitly include modules:

http://blog.davidchelimsky.net/articles/2008/05/29/rspec-waving-bye-bye-to-implicit-module-inclusion

Regards,
Craig

On 2008-11-24, at 00:39, Zach D. wrote:

Try: helper.format_utilities

Thanks everyone! I should have searched the API rather than Google.
I’ll do that next time.

Cheers,
Nick

On Fri, Nov 21, 2008 at 12:18 PM, Nick H. [email protected]
wrote:

require File.expand_path(File.dirname(FILE) + ‘/…/spec_helper’)

in this thread:
Testing helper methods in rspec - RSpec - Ruby-Forum

March is a long time ago :slight_smile:

Use helper. format_utilities …

Read this http://rspec.info/documentation/rails/writing/helpers.html
and if you’re still unsure feel free to write back.

Cheers,
David

On Nov 21, 2008, at 1:18 PM, Nick H. wrote:

require File.expand_path(File.dirname(FILE) + ‘/…/spec_helper’)

describe PropertiesHelper do
describe ‘#format_utilities’ do
it ‘should format a utilities value’ do
format_utilities(nil).should == ‘Unknown’
end
end
end

The error that’s occuring is:

Helpers are no longer automagically mixed into example groups. Use
the “helper” object (helper.format_uttilities)

Scott