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

Popular posts from this blog

c# - How to set Z index when using WPF DrawingContext? -

razor - Is this a bug in WebMatrix PageData? -

android - layout with fragment and framelayout replaced by another fragment and framelayout -