Andrew
Andrew

Reputation: 238667

How to test a Rails helper that depends on another Rails helper?

I am writing an RSpec spec to test a Rails helper. The problem is that the helper method that I'm testing depends on a method defined in a different helper. It may be a code smell to me, but I'm adding tests for legacy code and am not at a point where I can refactor. How can I test this Rails helper?

module FancyHelper
  def fancy_method
    html = "hello"
    html << another_fancy_method
    html
  end
end

module OtherHelper
  def another_fancy_method
    "world"
  end
end

require "spec_helper"
describe FancyHelper do
  describe "#fancy_method" do
    it "does what it's supposed to" do
      helper.fancy_method.should match("hello")
      # NoMethodError: undefined method `another_fancy_method'
    end
  end
end

Upvotes: 1

Views: 321

Answers (1)

rdmcfee
rdmcfee

Reputation: 550

This is what stubs are for. When testing your helper that depends on the other helper, you will want to stub the other helper to get a predictable value and complete the test.

EDIT: https://www.relishapp.com/rspec/rspec-mocks/docs/method-stubs thanks grantovich for the newer link.

Upvotes: 2

Related Questions