测试错误:创建方法

时间:2011-09-15 02:12:43

标签: ruby-on-rails ruby testing

所有断言都通过,但我收到错误:

1)错误:

test_should_perform_user_login(SessionsControllerTest):
NameError: undefined local variable or method `create' for StoriesController:Class

以下是测试的代码:

def test_should_perform_user_login                                                                                                    
  post :create, :login => 'patrick', :password => 'sekrit'                                                                            
  assert_redirected_to stories_path                                                                                                   
  assert_equal users(:patrick).id, session[:user_id]                                                                                  
  assert_equal users(:patrick), assigns(:current_user)  
end

这是我在`sessions_controller.rb:

中定义create方法的地方
def create
    @current_user = User.find_by_login_and_password(params[:login], params[:password])

    if @current_user
        session[:user_id] = @current_user.id
        if session[:return_to]
            redirect_to session[:return_to]
            session[:return_to] = nil
        else
            redirect_to stories_path
        end
    else
        render :action => 'new'
    end
end

这有帮助吗?

我正在读这本书'Simply Rails 2'。

1 个答案:

答案 0 :(得分:0)

修复了最大错误。

NameError: undefined local variable or method `create' for StoriesController:Class

这来自before_filter调用,您从方法符号数组中离开了:(冒号)。

下一个错误发生在application.rb;它的错误是:

NameError: undefined local variable or method `redirect_to_new_session_path'

redirect_to方法及其参数new_session_path之间有一个额外的下划线。

接下来是商店测试中的虚假选择器。最后我作为练习留给读者:)(提示:有两个问题。)