Brings back `assigns` and `assert_template` to your Rails tests
This gem brings back
assignsto your controller tests as well as
assert_templateto both controller and integration tests.
Note: This gem is only useful once
assignsand
assert_templatehave been removed from Rails.
Add this line to your application's Gemfile:
gem 'rails-controller-testing'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rails-controller-testing
See https://github.com/rspec/rspec-rails/issues/1393.
rspec-rails automatically integrates with this gem since version
3.5.0. Adding the gem to your
Gemfileis sufficient.
If you use an older version of rspec-rails, you can manually include the modules in your
rails_helper.
RSpec.configure do |config| [:controller, :view, :request].each do |type| config.include ::Rails::Controller::Testing::TestProcess, :type => type config.include ::Rails::Controller::Testing::TemplateAssertions, :type => type config.include ::Rails::Controller::Testing::Integration, :type => type end end
For projects and gems using controller tests outside of a Rails application, invoke the
Rails::Controller::Testing.installmethod inside your test suite setup to include the required modules on controller test cases.
# test/test_helper.rbrequire 'rails-controller-testing' Rails::Controller::Testing.install
assignsallows you to access the instance variables that have been passed to your views.
class PostsController < ActionController::Base def index @posts = Post.all end endclass PostControllerTest < ActionController::TestCase def test_index get :index assert_equal Post.all, assigns(:posts) end end
assert_templateallows to you assert that certain templates have been rendered.
class PostControllerTest < ActionController::TestCase def test_index get :index assert_template 'posts/index' end end
git checkout -b my-new-feature)
git commit -am 'Add some feature')
git push origin my-new-feature)