이 테스트가 실패한 이유를 이해하려고합니다. (필자는 테스트에 익숙하지 않습니다.) Shoulda 젬을 추가하여 빌트인 Rails 테스팅 프레임 워크를 사용하고 있습니다.왜이 레일 컨트롤러 테스트가 실패합니까?
테스트 :
require 'shoulda'
context "on GET to :new" do
setup do
get(:new)
end
should_render_template :new
should_not_set_the_flash
end
실패 :
1) Failure:
test: on GET to :new should render template :new. (SessionsControllerTest)
[/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/controller /macros.rb:220:in `__bind_1233882600_699194'
/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/context.rb:254:in `call'
/usr/local/lib/ruby/gems/1.8/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/context.rb:254:in `test: on GET to :new should render template :new. '
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb:94:in `__send__'
/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.2.2/lib/active_support/testing/setup_and_teardown.rb:94:in `run']:
expecting <"new"> but rendering with <"">
2 tests, 2 assertions, 1 failures, 0 errors
하지만 app.get '/sessions/new'
와 콘솔에서 실행하는 경우이 오류없이 잘 작동합니다.
"new
"템플릿이 브라우저에서 예상대로 렌더링됩니다.
나는 Haml을 사용하고 있습니다. 문제가 생길 수 있습니다. 내 템플릿은 "new.html.haml
"입니다.
감사합니다. 당신이 제안한 assert_match 호출은 그것을 해결했습니다. 나는 물건을 엉망으로 만들고있는 필터를 잊었다. – Ethan