代码之家  ›  专栏  ›  技术社区  ›  Ethan

为什么此控制器对创建操作的测试失败?

  •  0
  • Ethan  · 技术社区  · 15 年前

    我这里的考试不及格,我很难理解。我正在使用带有shoulda增强的test::Unit。中的操作 users_controller.rb 我在试着测试…

    def create
      unless params[:user][:email] =~ / specific regex needed for this app /i
    
        # ...
    
        render :template => 'sessions/new'
      end
    end
    

    测试…

    context 'on CREATE to :user' do
      context 'with invalid email' do
        setup { post :create, { 'user[email]' => 'abc@abcd' } }
        should_respond_with :success
      end
      # ...
    end
    

    失败,因为“响应为<:成功>,但为<302>”。它是怎样的302?

    将操作更改为…

    def create
      render :template => 'sessions/new'
    end
    

    测试仍然失败。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Kafka    15 年前

    @奥拉:你错了:帖子是连接到创建的。Put通常连接到更新。

    A:但是禁止是很奇怪的。以下是一些发现问题的建议(我从未使用shoulda,但我认为这不是shoulda的问题)。

    1. 确保在中定义了路由 配置/路由.rb 并与 耙路
    2. 您是否有任何可以对该行为负责的before_过滤器(登录过滤器、作为_验证等)?签出日志/test.log。过滤链中的一个停止出现在那里。
    3. 打印出响应正文 放置response.body 看看你会得到什么回报。

    希望这有帮助。

        2
  •  -1
  •   Ola Bini    15 年前

    如果您使用的是默认的RESTful URL,那么您可能应该使用put,而不是post…因为Put连接到了Create,所以发布到该URL将给您一个未经授权的重定向。