2017-10-17 6 views
1

를 전달해야 할 때 새로운 사용자보기 테스트 실패, 나는이 시험이 있습니다RSpec에 : 그것은

HtmlCode inspection

:

require 'rails_helper' 
require 'support/factory_girl' 

RSpec.describe 'users/new', type: :view do 
    before(:each) do 
     assign(:user, create(:user)) 
    end 

    it 'renders new user form' do 
     render 
     assert_select 'form[action=?][method=?]', users_path, 'post' 
    end 
end 

그리고이 페이지를 양식이 이미지의 두 번째 줄에

이 테스트에서는 양식을 찾을 수 없다는 오류가 발생합니다.

rspec spec/views/users/new.html.erb_spec.rb 

users/new 
    renders new user form (FAILED - 1) 

Failures: 

    1) users/new renders new user form 
    Failure/Error: assert_select 'form[action=?][method=?]', users_path, 'post' 

    Minitest::Assertion: 
     Expected at least 1 element matching "form[action="/users"][method="post"]", found 0.. 
     Expected 0 to be >= 1. 
    # /home/ramses/.rvm/gems/[email protected]/gems/minitest-5.10.3/lib/minitest/assertions.rb:139:in `assert' 
    # /home/ramses/.rvm/gems/ruby-2.4.0[email protected]/gems/minitest-5.10.3/lib/minitest/assertions.rb:270:in `assert_operator' 
    # /home/ramses/.rvm/gems/[email protected]/gems/rails-dom-testing-2.0.3/lib/rails/dom/testing/assertions/selector_assertions.rb:277:in `assert_size_match!' 
    # /home/ramses/.rvm/gems/[email protected]/gems/rails-dom-testing-2.0.3/lib/rails/dom/testing/assertions/selector_assertions.rb:172:in `block in assert_select' 
    # /home/ramses/.rvm/gems/[email protected]/gems/rails-dom-testing-2.0.3/lib/rails/dom/testing/assertions/selector_assertions.rb:171:in `tap' 
    # /home/ramses/.rvm/gems/[email protected]/gems/rails-dom-testing-2.0.3/lib/rails/dom/testing/assertions/selector_assertions.rb:171:in `assert_select' 
    # ./spec/views/users/new.html.erb_spec.rb:11:in `block (2 levels) in <top (required)>' 

Finished in 0.24509 seconds (files took 2.93 seconds to load) 
1 example, 1 failure 

Failed examples: 

rspec ./spec/views/users/new.html.erb_spec.rb:9 # users/new renders new user form 

시험을 통과하려면 무엇을 변경해야합니까?

it 'renders new user form' do 
    render 
    puts subject 
    assert_select 'form[action=?][method=?]', users_path, 'post' 
end 

그리고이 무엇인지 검사 :

답변

0

문제는 테스트에서 new 동작을 설명하지만 before(:each) 블록에서 사용자가 생성되어 edit 동작을 트리거하는 것입니다.

그래서 문제가되지 뷰에서, 테스트 자체에 있었다

require 'rails_helper' 
require 'support/factory_girl' 

RSpec.describe 'users/new', type: :view do 
    before(:each) do 
     #use build instead of create, to pass a non-saved user 
     assign(:user, build(:user)) 
    end 

    it 'renders new user form' do 
     render 
     # you can use byebug to inspect variables. 
     # byebug 
     # I figured this out by inspecting the contents of the rendered var 
     #inside byebug, use var to show all variables in context 
     assert_select 'form[action=?][method=?]', users_path, 'post' 
    end 
end 
1

내가보기 (? 어쩌면 당신은 VAR을 설정하고 오류가 발생하지 않았다)

이 같은 것을 넣어 렌더링 문제가 있다고 생각.

대신 puts subject 대신에 중단 점을 설정하고 subject의 내용을 검사하거나 html 파일에 저장하고 검사를 위해 브라우저에서 열 수 있습니다.

+0

나는 당신의 조언을 알아낼 수 있었다; 솔루션에 대한 내 대답을 참조하십시오. 나는'puts subject' 대신'byebug'를 사용하고'rendered '변수를 예상했습니다 – Ramses