2016-06-27 3 views
0

에 대해 'expect'라는 calss 정의되지 않은 메서드에서 받아 들일 수 없습니다.이 메서드는 클래스 메서드에서 호출 할 때 액세스 할 수 없다고 예상합니다. 그러나 그것은 기능 spec.So에서 호출 할 때 기본적으로 마지막 방법 (i_expect_to_see_article_on_home_page) 작동하지 않습니다 잘 작동합니다.Capybara 메서드는 # <ArticleForm : 0xb5e98bc>

사양/지원/ArticleForm.rb

require 'rails_helper' 

class ArticleForm 
    include Capybara::DSL 


    def visit_home_page 
    visit('/') 
    self 
    end 

    def create_an_article 
    click_on('New Article') 
    fill_in('Title', with: "My title") 
    fill_in('Content', with: "My content") 
    click_on('Create Article') 
    self 
    end 

    def i_expect_to_see_article_on_home_page 
    visit('/') 
    expect(page).to have_text("My title") 
    expect(page).to have_text("My content") 
    self 
    end 
end 

당신이 그것을 포장 할 생각이 있지만, 사용하고있는 구문

require 'rails_helper' 

require_relative '../support/ArticelForm.rb' 
feature "home page" do 
    article_form = ArticleForm.new 

    scenario "Visit the home page and post an article" do 
    article_form.visit_home_page.create_an_article 
    article_form.visit_home_page.i_expect_to_see_article_on_home_page 
    end 
end 
+0

기사 사양에 너무 많은'end'가 있습니다. 문제를 해결할 수 있습니까? –

+0

무엇이 오류입니까? – fabersky

+0

정의되지 않은 메소드 'have_content'또는 # 에 대한 예상되지 않은 메소드 'expect' 의미 하시겠습니까? exec – Faisal

답변

1

귀하의 개체에 include RSpec::Matchers해야합니다. 카피 바라 매트 셔 (capybara matcher)를 사용하려면 Capybara :: RSpecMatchers와 동일한 작업을 수행해야합니다.

+0

RSpec :: Matchers는'expect'를 얻기 위해 포함해야합니다. –

+0

@FrederickCheung 좋은 캐치 - 고마워요 - 고마워요. –

0

임에 익숙하지 않은 스펙/기능/article_spec.rb "블록으로". 이것은 정상적으로 그것을 쓰는 방법입니다 :

describe "i_expect_to_see_article_on_home_page" do 
    it 'should do something' do 
    visit('/') 
    expect(page).to have_text("My title") 
    expect(page).to have_text("My content") 
    end 
end 
+0

'scenario'는 기능 사양에서'it'와 동일하게 동작합니다. 그냥 별칭인지 확실하지 않지만 그렇게 생각할 것입니다. –

+0

2 가지 방법으로 클래스를 작성하여 스펙을 단순화하려고합니다. 게시물을 만드는 방법과 게시물이 만들어 졌는지 확인하는 방법. 저는 코드를 중앙 집중화하고 다른 장소에서 사용할 수 있도록이 작업을 수행하고 있습니다. Capybara는 ArticleForm 클래스의 두 번째 메서드에서 사용할 수없는 것 같습니다. – Faisal

+0

capybara가 꽤 좋은 matchers를 가지고 있다고 생각했습니다. –