Why is this Rails controller controller not working?

I am trying to understand why this test fails. (I'm new to testing). I use the built-in Rails testing framework with the addition of the Shoulda gem.

Test:

require 'shoulda'

context "on GET to :new" do

  setup do
    get(:new)
  end

  should_render_template :new
  should_not_set_the_flash

end

Fails:

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

But if I run it on the console using app.get '/sessions/new', it works fine without errors.

And the template " new" is displayed in the browser as expected.

I am using Haml. Perhaps this creates a problem. My template is called " new.html.haml".

+3
source share
2 answers

, . ,

should_respond_with :success

@response.body, ,

# This will fail but should give you some clue about what was sent back.
should "sent something back in the body" do
  assert_match 'boohooo', @response.body
end

, :

should_render_template "new.html.haml"

, HAML .

+8

Shoulda, Clearance Rails 2.3.2. , , , 'assert_template'. -, Rails .

, ( Clearance, Shoulda).

http://groups.google.com/group/shoulda/browse_thread/thread/8c0a66c80ff4fd76

0

Source: https://habr.com/ru/post/1702793/


All Articles