When testing your helpers, you might want to test if your call to image_tag generates the correct output.

Unfortunately, in Rails, for caching purposes, the asset tag is added which makes testing it somewhat unreliable. Luckily there is an easy way around that. If you define the environment variable RAILS_ASSET_ID, that is used instead of some permutation of the file-creation-date/time.

You could set RAILS_ASSET_ID to a specific number, simplifying the tests, because the number will always be the same, on all machines executing the tests. But if you set RAILS_ASSET_ID to an empty string, it effectively removes the tag from the link. For testing this is exactly what we want.

So an easy way to test is:

describe OperatorsHelper do
  context "get_operator_icon" do
    before(:each) do
      ENV['RAILS_ASSET_ID'] = ''
    end
    
    it "returns the image for any operator (not current)" do
      helper.stub(:current_operator?).and_return(false)
      @operator = Factory(:operator)
      helper.get_operator_icon(@operator).should == "<img alt=\"User-business-gray\" src=\"/images/icons/user-business-gray.png\" title=\"interactive user\" />"
    end

    it "returns the image for the current operator" do
      helper.stub(:current_operator?).and_return(true)
      @operator = Factory(:operator)
      helper.get_operator_icon(@operator).should == "<img alt=\"User-business\" src=\"/images/icons/user-business.png\" title=\"interactive user (yourself)\" />"
    end
  end
end

Hope this might help someone with the same problem :)