2013-01-18 36 views

Trả lời

23

Bạn chỉ cần bao gồm các mô-đun helper có liên quan trong thử nghiệm của bạn để làm cho phương pháp có sẵn:

describe "foo" do 
    include ActionView::Helpers 

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

Nó thực sự đơn giản như vậy .

+0

Bạn có thể nói làm thế nào để gọi phương pháp? Tôi đã thử 'SearchHelper :: formatResultDate (r.date)' và 'formatResultDate (r.date)' nhưng lại có một phương thức "undefined" khác. Thks –

+1

Đó có phải là người trợ giúp của riêng bạn không? Có phải 'SearchHelper' là một mô-đun không? Nếu vậy, chỉ cần thay 'inlucde ActionView :: Helpers' bằng' include SearchHelper', và sau đó bạn chỉ có thể gọi phương thức với 'formatResultDate (r.date)'. –

+2

Điều này không hiệu quả đối với tôi khi kiểm tra bưu phẩm. ví dụ 'expect (mail.body) .to match (I18n.t ('some.path', đối số: link_to (giá trị, custom_url_helper (giá trị)))'. –

-1

Tôi giả sử bạn đang cố gắng kiểm tra phương thức trợ giúp. Để thực hiện việc này, bạn sẽ phải đặt tệp thông số của mình vào spec/helpers/. Do bạn đang sử dụng đá quý rspec-rails, điều này sẽ cung cấp cho bạn phương thức helper cho phép bạn gọi bất kỳ phương thức trợ giúp nào trên đó.

Có một ví dụ tốt đẹp hơn trong 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

Không, có rất nhiều câu trả lời về phương pháp trợ giúp thử nghiệm. Tôi đang cố gắng sử dụng một phương pháp trợ giúp trong một thử nghiệm tích hợp. Tks anyway –

+1

Oh okay.Nếu bạn có thể mở rộng câu hỏi của bạn và cung cấp thêm một chút chi tiết (có thể một số ví dụ mã) Tôi sẽ cố gắng giúp bạn anyways :) –

4

Nếu bạn đang cố gắng sử dụng một phương pháp helper trên kiểm tra xem, bạn có thể đi với những điều sau đây:

before do 
    view.extend MyHelper 
end 

Nó phải được bên trong một khối describe.

Nó làm việc cho tôi trên đường ray 3.2 và rspec 2.13

+0

Nếu chúng ta giả sử bạn đang ở trong một spec/helpers/my_helper_spec .rb từ đâu đến "xem" trong spec? –

+0

@IvailoBardarov Xin lỗi, điều này là để sử dụng các khung nhìn bên trong. Như OP sais: 'Để làm rõ, tôi không cố gắng thử nghiệm một phương thức trợ giúp.' – fotanus

8

Đối với bất cứ ai đến muộn để câu hỏi này, nó được trả lời trên trang web 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

Như bạn có thể thấy ở đây https://github.com/rspec/rspec-rails, bạn nên khởi tạo spec/thư mục (trong đó thông số kỹ thuật sẽ nằm) với:

$ rails generate rspec:install 

này sẽ tạo ra một rails_helper.rb với các tùy chọn

config.infer_spec_type_from_file_location! 

và cuối cùng yêu cầu rails_helper mới trong helper_spec.rb thay vì yêu cầu 'spec_helper'.

require 'rails_helper' 
describe ApplicationHelper do 
    ... 
end 

chúc may mắn.

1

Dựa trên Thomas Riboulet's post on Coderwall:

Vào đầu file spec của bạn thêm này:

và sau đó gọi một helper đặc biệt với helper.name_of_the_helper.

Ví dụ cụ thể này bao gồm ActionView's NumberHelper. Tôi cần số UrlHelper, vì vậy tôi đã thực hiện include ActionView::Helpers::UrlHelperhelper.link_to.

Các vấn đề liên quan