I'm trying to build some unit tests for testing my Rails helpers, but I can never remember how to access them. Annoying. Suggestions?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
In rails 3 you can do this (and in fact it's what the generator creates):
require 'test_helper'
class YourHelperTest < ActionView::TestCase
test "should work" do
assert_equal "result", your_helper_method
end
end
And of course the rspec variant by Matt Darby works in rails 3 too
回答2:
You can do the same in RSpec as:
require File.dirname(__FILE__) + '/../spec_helper'
describe FoosHelper do
it "should do something" do
helper.some_helper_method.should == @something
end
end
回答3:
Stolen from here: http://joakimandersson.se/archives/2006/10/05/test-your-rails-helpers/
require File.dirname(__FILE__) + ‘/../test_helper’
require ‘user_helper’
class UserHelperTest < Test::Unit::TestCase
include UserHelper
def test_a_user_helper_method_here
end
end
[Stolen from Matt Darby, who also wrote in this thread.] You can do the same in RSpec as:
require File.dirname(__FILE__) + '/../spec_helper'
describe FoosHelper do
it "should do something" do
helper.some_helper_method.should == @something
end
end
回答4:
This thread is kind of old, but I thought I'd reply with what I use:
# encoding: UTF-8
require 'spec_helper'
describe AuthHelper do
include AuthHelper # has methods #login and #logout that modify the session
describe "#login & #logout" do
it "logs in & out a user" do
user = User.new :username => "AnnOnymous"
login user
expect(session[:user]).to eq(user)
logout
expect(session[:user]).to be_nil
end
end
end
回答5:
I just posted this answer on another thread asking the same question. I did the following in my project.
require_relative '../../app/helpers/import_helper'