Проблем с функционални тестове

  1. Имам следния проблем — искам да си тествам контролер за регистрация на потребител. Първо пускам заявка get за да проверя instance променливите, обаче те са nil. Второ опитвам се да регистрирам този потребител със заявка post и нужните параметри, но и това се чупи.
    Ето кода на тестовете:

        def test_registration_page
            get :register
            assert_not_nil assigns[:title] #чупи се тук.
            assert_equal "Register", assigns[:title]
            assert_response :success
            assert_template :register
            assert_tag "form", :attributes => { :action => "user/register", :method => "post" }        
        end
        
        def test_registration_success
            post :register, :user => { :screen_name => "blablaenough", 
                                                :email =>  "sadasj@bfav.com", 
                                                :password => "long_enough" 
                                            }
            user = assigns[:user]        
            assert_not_nil user # и тук се чупи...
            new_user = User.find :all, :conditions => [ :screen_name => user.screen_name ]
            assert_equal user, new_user
            assert_equal "OK, fine! :)", flash[:notice]
            assert_redirected_to :action => "index"
        end

    Ето кода на контролера:
    class UserController < ApplicationController
    
      def initialize
        @title = "Register"
       super
      end
    
      def index      
      end
    
      def register      
          if request.post? and params[:user]
            @user = User.new params[:user]
            if @user.save
                flash[:notice] = "OK, fine! :)"
                #render :text => "User created!"
                redirect_to :action => "index"
            end
        end
      end
    
    end

    Публикувано преди повече от 4 години
  2. Хмм, как се слага таг за код?
    Мерси, Дойчо :)

    Публикувано преди повече от 4 години
  3. С риск да повторя няколко човека:

    { { { #без интервали
    код, код
    } } } #пак

    другото – Textile :)

    Публикувано преди повече от 4 години
  4. [:foo => 123] не не е добра идея. Наистина работи, но не както очакваш. Оправи си го. Това ти е във find-а в теста.

    Какво връща assigns.inspect ?

    Публикувано преди повече от 4 години
  5. Ам, и не пиши конструктори на контролери. По-добро after filter, понеже туко виж конструкторите започнат да вземат аргументи и кода ти ще се счупи.

    Публикувано преди повече от 4 години
  6. Някъде в бързината не съм прочел това:

    As is the case with normal Hash objects, you can access the values by referencing the keys by string. You can also reference them by symbol name, except for assigns. For example:
    
      flash["gordon"]               flash[:gordon]
      session["shmession"]          session[:shmession]
      cookies["are_good_for_u"]     cookies[:are_good_for_u]
    
    # Because you can't use assigns[:something] for historical reasons:
      assigns["something"]          assigns(:something)

    Прав си за филтъра :)
    Не е ли обаче before_filter?
    Можеш ли да ми покажеш какво имаш предвид за find-а?
    Видях, че не сочат към един и същи обект, въпреки, че всичко им е еднакво.

    Edit: User.find_by_screen_name?

    Публикувано преди повече от 4 години
  7. Написал си

    new_user = User.find :all, :conditions => [ :screen_name => user.screen_name ]

    а си имал предвид

    new_user = User.find :all, :conditions => { :screen_name => user.screen_name }

    понеже

    [1 => 2] == [{1 => 2}]

    И да, find_all_by_screen_name е по-добре. find_all, нали.

    Публикувано преди повече от 4 години
  8. Благодаря, така е.

    Публикувано преди повече от 4 години

Нов отговор

Трябва да сте вътре за да отговаряте.