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.url
为http://localhost/controller?a=b
我不想在URL中包含参数,因为在真实场景(外部测试)中,URL是安全签名的一部分。
我的问题是为什么rspec post将参数添加到URL而不是像浏览器(或CURL)中的POST那样表现?
答案 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}'。
检查您的路线,看看您的:新动作是发布还是获取。