您需要存根所有3个方法,并使用实例变量控制两种不同状态的值:
require 'test_helper'
class ApplicationHelperTest < ActionView::TestCase
def signed_in?
@signed_in
end
def new_user_session_path
'/users/new'
end
def destroy_user_session_path
'/users/new'
end
test 'returns Sign Out when signed in' do
@signed_in = true
assert_match 'Sign Out', sign_in_or_out_link
end
test 'returns Sign In when not signed in' do
@signed_in = false
assert_match /Sign In/, sign_in_or_out_link
end
end
~/codebases/tmp/rails-devise master*
⯠rake test
Run options: --seed 28418
# Running:
..
Finished in 0.007165s, 279.1347 runs/s, 558.2694 assertions/s.
2 runs, 4 assertions, 0 failures, 0 errors, 0 skips