RSpec POST更改URL

时间:2011-12-05 21:42:59

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

Rails 3,RSpec 2:

在我对控制器的rspec测试中,我正在使用post并传入一些参数:

it "returns a job id" do
  post :new, { :a => 'b'}
  response.status.should == 200
end

这在控制器params[:a] is 'b'

中工作正常

但是,控制器端的request.urlhttp://localhost/controller?a=b

我不想在URL中包含参数,因为在真实场景(外部测试)中,URL是安全签名的一部分。

我的问题是为什么rspec post将参数添加到URL而不是像浏览器(或CURL)中的POST那样表现?

2 个答案:

答案 0 :(得分:0)

我还没有找到答案,但这是我如何设法解决问题,以便我的单元测试工作:我在运行单元测试时进行简单的旁路签名检查。这是代码:

def check_signature
  return if request.host == 'test.host'

  # check signature
  # ...
end

答案 1 :(得分:0)

我知道这有点老了,但我觉得很奇怪你正在使用帖子:新动作。一般来说:new显示一个表单,因此你有'get:new',而在创建测试中你会使用post,'post:create,params = {blah:blah}'。

检查您的路线,看看您的:新动作是发布还是获取。