ruby-on-rails - 将 header 附加到 Rspec Controller 测试

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

我正在尝试为我的 Controller 编写测试,该 Controller 接收来自外部服务的请求。到目前为止,这是我的测试:

describe ApplyController do
  context 'when valid' do
    let(:parameters) do
      file = File.join File.dirname(__FILE__), '..', 'samples', 'Indeed.json'
      JSON.parse(File.read file)
    end
    let(:signature) { 'GC02UVj0d4bqa5peNFHdPQAZ2BI=' }

    subject(:response) { post :indeed, parameters, 'X-Indeed-Signature' => signature }

    it 'returns 200 ok if Request is valid' do
      expect(response.status).to eq 200
    end
  end
end

这应该根据 documentation 工作我可以find .

我的 Controller 现在看起来像这样:

class ApplyController < Application Controller
  def indeed
    binding.pry
  end
end

当我在测试中使用 Pry 并尝试检查 request.headers['X-Indeed-Signature'] 的值时,我总是得到 nil

有什么我想念的吗?我正在使用 Rails 3.2 和 Rspec 3

最佳答案

我想你想要(直接从你的一个链接)

it "returns 200 ok"
  @request.headers['X-Indeed-Signature'] = signature
  post :indeed, parameters
  response.status.should == 200
end

你不需要主题(:响应)

关于ruby-on-rails - 将 header 附加到 Rspec Controller 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20529917/

相关文章:

ruby-on-rails - Rails + PostgreSQL,根据 Rails 验证规则创建重复记录

ruby-on-rails - 如何从模型调用辅助方法?

ruby-on-rails - 如何从功能测试中调用 'time_ago_in_words'?

ruby-on-rails - Ruby on Rails : Error messages not displaying since changing order of a list

ruby-on-rails - 如何在 Rails 中设置 database.yml 文件?

ruby-on-rails - 使用 mysql2 Ruby gem 确定 mysql2 服务器版本

ruby-on-rails - 将 RoR 部署到 Heroku 和 Sqlite3 失败

jquery - 检测ajax :failure in Rails 3 forms

ruby-on-rails - rake db:create - Mysql2::Error: 未知数据库

ruby-on-rails - 仅在存在时验证属性(仅当用户填写时)