diff options
author | Kir Shatrov <shatrov@me.com> | 2015-01-03 20:14:05 +0100 |
---|---|---|
committer | Kir Shatrov <shatrov@me.com> | 2015-01-03 20:18:56 +0100 |
commit | 4a3b9c82830b08056467524081d4dd408eb6db43 (patch) | |
tree | 198709d0375fac68bb94bdcd69a01838a627c1ad | |
parent | bb3c054358901e28a697643b1f76e0a29b68158e (diff) | |
download | rails-4a3b9c82830b08056467524081d4dd408eb6db43.tar.gz rails-4a3b9c82830b08056467524081d4dd408eb6db43.tar.bz2 rails-4a3b9c82830b08056467524081d4dd408eb6db43.zip |
Docs for controller test helpers
rails/rails#18305
-rw-r--r-- | guides/source/testing.md | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/guides/source/testing.md b/guides/source/testing.md index fac3f18eb9..d6e4aa36db 100644 --- a/guides/source/testing.md +++ b/guides/source/testing.md @@ -782,6 +782,41 @@ end Similar to other callbacks in Rails, the `setup` and `teardown` methods can also be used by passing a block, lambda, or method name as a symbol to call. +### Test helpers + +To avoid code duplication, you can add your own test helpers. +Sign in helper can be a good example: + +```ruby +test/test_helper.rb + +module SignInHelper + def sign_in(user) + session[:user_id] = user.id + end +end + +class ActionController::TestCase + include SignInHelper +end +``` + +```ruby +require 'test_helper' + +class ProfileControllerTest < ActionController::TestCase + + test "should show profile" do + # helper is now reusable from any controller test case + sign_in users(:david) + + get :show + assert_response :success + assert_equal users(:david), assigns(:user) + end +end +``` + Testing Routes -------------- |