ruby on rails - railstutorial.org - rspec failed but in browser everything is OK -
i trying follow rails tutorial , have failed rspec in browser app works needed. when signed in (in browser) , go "http://localhost:3000/users/1/edit" page opens. previous rspecs tutorial passed.
i using rails '3.1.0.rc4' , working in windows.
the spec fails (from users_controller_spec.rb):
describe "get 'edit" before(:each) @user = factory(:user) test_sign_in(@user) end "should successful" :edit, :id => @user response.should be_success end end
code of test_sign_in spec_helper.rb:
rspec.configure |config| config.mock_with :rspec config.fixture_path = "#{::rails.root}/spec/fixtures" config.use_transactional_fixtures = true def test_sign_in(user) controller.sign_in(user) end end
code of factories.rb
factory.define :user |user| user.name "mikhail" user.email "mikleb@yandex.ru" user.password "123456789a" user.password_confirmation "123456789a" end
text console:
failures: 1) userscontroller 'edit should successful failure/error: response.should be_success expected success? return true, got false # ./spec/controllers/users_controller_spec.rb:111:in `block (3 levels) in < top (required)>'
upd: after "get :edit, :id => @user" user not signed in. wrote in browser works needed. how possible?
here sessionhelper included in applicationcontrolelr:
module sessionshelper def sign_in(user) cookies.permanent.signed[:remember_token] = [user.id, user.salt] self.current_user = user end def sign_out cookies.delete(:remember_token) self.current_user = nil end def signed_in? !current_user.nil? end def current_user=(user) @curent_user = user end def current_user @current_user ||= user_from_remember_token end def deny_access redirect_to signin_path, :notice => "please sign in access page." end private def user_from_remember_token user.authenticate_with_salt(*remember_token) end def remember_token cookies.signed[:remember_token] || [nil, nil] end end
have dumped response.body
see rspec thinks it's seeing? may (i forget if still necessary) need enable render_views
described in question).
is possible user not logged in , site redirecting edit sign-in page or similar?
another caveat, pretty sure rspec returns true be_success
if http code 2xx code (200 ok, 201 created, etc). if controller redirecting (302, 304, etc) rspec not consider request have "been successful."
try dropping in puts response.body
before assertion, may narrow down problem.
Comments
Post a Comment