【问题标题】:How to use rails 'get' in a rspec test如何在 rspec 测试中使用 rails 'get'
【发布时间】:2014-07-11 18:12:50
【问题描述】:

在控制器规范中,我有以下代码...

    subject do
      get 'index'
      puts 'response is ' + response.body
      JSON.parse(response.body)
    end

这很好用,获取特定 api 控制器的索引操作。但是,当我尝试显示请求时,我不知道如何传入变量,所以当我运行时...

    subject do
      get 'show'
      puts 'response is ' + response.body
      JSON.parse(response.body)
    end

我得到了错误...

 ←[31mFailure/Error:←[0m ←[31mget 'show'←[0m
 ←[31mActionController::RoutingError←[0m:
   ←[31mNo route matches {:controller=>"api/example/v1/clinics", :action=>"show"}←[0m

api/example/v1/clinics 有一个显示操作,当然我没有传递它需要的参数,不知道该怎么做。如何让表演动作发挥作用?

我尝试了类似的东西

    get 'api/example/v1/clinics/2'

但这也不起作用。我似乎也找不到此 rails 方法的文档。任何帮助表示赞赏。谢谢。

【问题讨论】:

  • 怎么样:get :show, id: 1 假设您的路线需要传递一个 id。
  • @Brian: 哈哈,谁知道它会这么容易呢:) 它实际上得到 :show, :id => 1
  • 如果您将其添加为答案,我会接受,谢谢:)
  • 不用担心,这是一个快速且容易忽略的方法

标签: ruby-on-rails ruby-on-rails-3 rspec


【解决方案1】:

对于需要参数的控制器操作(例如 show 操作需要“id”),您需要将其作为参数传递给 get 请求:

get :show, id: 1

或者如果使用较旧的 1.8 哈希语法:

get :show, :id => 1

【讨论】:

    【解决方案2】:

    您可以通过以下方式将 id 传递给get :show

    get 'show', id: 2
    

    【讨论】:

      猜你喜欢
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 2011-11-16
      • 2014-09-28
      相关资源
      最近更新 更多