2009-01-13 6 views

ответ

35

В рельсах 3 вы можете это сделать (и на самом деле это то, что создает генератор):

require 'test_helper' 

class YourHelperTest < ActionView::TestCase 
    test "should work" do 
    assert_equal "result", your_helper_method 
    end 
end 

И конечно the rspec variant by Matt Darby работает в рельсах 3 тоже

11

Stolen здесь: 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 от Мэтта Дарби, который также написал в этой теме.] Вы можете сделать то же самое в RSpec как:

require File.dirname(__FILE__) + '/../spec_helper' 

describe FoosHelper do 

    it "should do something" do 
    helper.some_helper_method.should == @something 
    end 

end 
+0

Лучше получить от 'ActionView :: TestCase' иначе вы не будете иметь доступ к' params' Hash –

28

Вы можете сделать то же в RSpec как:

require File.dirname(__FILE__) + '/../spec_helper' 

describe FoosHelper do 

    it "should do something" do 
    helper.some_helper_method.should == @something 
    end 

end 
+0

это раз, как это я хочу, чтобы я мог одобрить два ответа. Не могли бы вы скопировать и вставить свой ответ ниже в свой ответ, и я отвечу на этот вопрос? – aronchick

+2

Что такое помощник? Я получаю 'undefined локальную переменную или метод'. –

+0

Я также получил «неопределенную локальную переменную или метод helper», а затем выполнил инструкции по адресу https://relishapp.com/rspec/rspec-rails/v/3-6/docs/helper-specs/helper- spec для решения. В моем случае у меня уже был 'config.infer_spec_type_from_file_location!', Но забыл 'require 'spec_helper''. Надеюсь, это поможет! –

5

Эта нить вроде старая, но я думал, что ответить, что я использую:

# 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 
+0

Только одно предупреждение для людей, использующих это, включает в себя концепции. Если вы случайно положили это до того, как «описать ...», он будет отлично работать в этом единственном тесте, но может испортить ваш тестовый набор из-за двойного включения. –

0

Я просто отправил это ответьте на другой вопрос, задав тот же вопрос. В моем проекте я сделал следующее.

require_relative '../../app/helpers/import_helper'