2013-01-18 1 views

Odpowiedz

23

Wystarczy włączyć odpowiedni moduł wspomagający w teście na udostępnienie metody:

describe "foo" do 
    include ActionView::Helpers 

    it "does something with a helper method" do 
    # use any helper methods here 

To naprawdę takie proste .

+0

Czy możesz powiedzieć, jak nazwać metodę? Próbowałem 'SearchHelper :: formatResultDate (r.date)' i 'formatResultDate (r.date)', ale uzyskać jeszcze inną "niezdefiniowaną metodę". Thks –

+1

Czy to twój pomocnik? Czy 'SearchHelper' jest modułem? Jeśli tak, po prostu zamień 'inlucde ActionView :: Helpers' na' include SearchHelper', a następnie powinieneś móc wywołać metodę z 'formatResultDate (r.date)'. –

+2

Nie sprawdzało się to podczas testowania programów pocztowych. na przykład 'expect (mail.body) .to match (I18n.t ('some.path', argument: link_to (value, custom_url_helper (value)))........ –

-1

Zakładam, że próbujesz przetestować metodę pomocnika. Aby to zrobić, musisz umieścić swój plik specyfikacji w spec/helpers/. Biorąc pod uwagę, że używasz klejnotu rspec-rails, dostarczysz mu metodę helper, która pozwala wywołać na niej dowolną metodę pomocniczą.

Jest ładny przykład nad w the official rspec-rails documentation:

require "spec_helper" 

describe ApplicationHelper do 
    describe "#page_title" do 
    it "returns the default title" do 
     expect(helper.page_title).to eq("RSpec is your friend") 
    end 
    end 
end 
+0

Nop, istnieje wiele odpowiedzi na temat testowania metod pomocniczych. Próbuję użyć metody pomocnika w teście integracji. Tks i tak –

+1

O okej.Jeśli mógłbyś rozwinąć swoje pytanie i podać trochę więcej szczegółów (może niektóre przykłady kodu), postaram się ci pomóc, tak czy inaczej :) –

4

Jeśli próbujesz użyć metody pomocnika na teście widzenia, można przejść z następujących czynności:

before do 
    view.extend MyHelper 
end 

To musi być wewnątrz describe bloku.

To działa dla mnie na szynach 3.2 i rspec 2,13

+0

Jeśli założymy, że jesteś w spec/helpers/my_helper_spec .rb skąd pochodzi "widok" w specyfikacji? –

+0

@IaccessBardarov Przepraszamy, to jest za korzystanie z wewnętrznych widoków.Jako OP sais: "Aby wyjaśnić, nie próbuję przetestować metody pomocnika." – fotanus

8

Dla każdego, kto przyjeżdża późno na to pytanie, to zostanie odebrane na miejscu Relish.

require "spec_helper" 

describe "items/search.html.haml" do 
    before do 
    controller.singleton_class.class_eval do 
     protected 
     def current_user 
     FactoryGirl.build_stubbed(:merchant) 
     end 
     helper_method :current_user 
    end 
    end 

    it "renders the not found message when @items is empty" do 
    render 

    expect(
     rendered 
    ).to match("Sorry, we can't find any items matching "".") 
    end 
end 
0

Jak widać tutaj https://github.com/rspec/rspec-rails, należy zainicjować spec/katalogu (gdzie będą przebywać specyfikacje) z:

$ rails generate rspec:install 

ten wygeneruje rails_helper.rb z opcją

config.infer_spec_type_from_file_location! 

i wreszcie wymagać nowego rails_helper w tobie helper_spec.rb zamiast wymagać 'spec_helper'.

require 'rails_helper' 
describe ApplicationHelper do 
    ... 
end 

powodzenia.