为什么没有' params'在控制器规范中的请求之间清除?

时间:2017-06-22 14:36:54

标签: ruby-on-rails ruby rspec parameters controller

我有以下代码:

let(:params) do
  {
    customer: {
      email: 'testing@mailinator.com',
      confirmation_number: "12345"
    }
  }
end

it 'does something' do
  post :create, params: params
  get :show, params: { cache_key: 1 }
  expect(something).to be_truthy
end

show操作在没有:params密钥的情况下收到:customer,但是当此规范运行时,params包含post请求中发送的内容以及在get请求中发送。

为什么会发生这种情况?如何让Rspec模仿请求之间的真实行为(关于params内部的内容)?

1 个答案:

答案 0 :(得分:0)

控制器规范 - 控制器规范是Rails功能测试的RSpec包装器。它允许您在每个示例中模拟单个http请求,然后指定预期结果

请求规范 - 请求规范提供了一个围绕Rails集成测试的瘦包装器,旨在通过完整堆栈驱动行为,包括路由(由Rails提供)并且没有存根(这取决于你)。

因此,如果您想测试API控制器,我建议您在测试单个请求时使用Controller规范。