Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RSpec测试JSON API:设置头变量时出现问题_Json_Ruby On Rails 4_Rspec - Fatal编程技术网

RSpec测试JSON API:设置头变量时出现问题

RSpec测试JSON API:设置头变量时出现问题,json,ruby-on-rails-4,rspec,Json,Ruby On Rails 4,Rspec,我试图在codeschool课程“使用Rails生存API”之后创建一个API,作为一个指南。 这是我的控制器索引: def index respond_to do |format| format.json { render json: Project.all, status: 200 } format.all { head 406 } end end 当我尝试像这样用rspec测试控制器时(如本课程中所述): 请求没有设置为JSON,而是设置为html。(并且测试失败

我试图在codeschool课程“使用Rails生存API”之后创建一个API,作为一个指南。 这是我的控制器索引:

def index
  respond_to do |format|
    format.json { render json: Project.all, status: 200 }
    format.all { head 406 }
  end
end
当我尝试像这样用rspec测试控制器时(如本课程中所述):

请求没有设置为JSON,而是设置为html。(并且测试失败:预期200得到406) 但是,如果我尝试以下方法:

  request.accept = Mime::JSON.to_s
  get :index, {}, {}
  expect(response.status).to eq(200)
请求接受头被设置为“application/json”,测试通过

所以我确实有一个解决办法,但我想我可以在使用时设置不同的标题。我甚至试过这些评论所说的话。“接受”=>Mime::JSON不起作用,我遗漏了什么


谢谢

好的,我从codeschool的支持部门得到了一些帮助:

看起来get方法在控制器测试/规格上的工作方式与在请求规格/集成测试上的工作方式不同(这是我们在本课程中使用的)

我相信你的例子是控制器规格,这可能是使用这个-。。。从读取文档来看,似乎没有办法在该方法上传递头值,因此您的替代方法可能是设置头的唯一方法。另一方面,集成测试使用另一种get方法。。。这就是我们在课程中使用的


谢谢你的代码学校。

两个链接都断了。是的,这已经帮不了什么忙了。我找不到他们支持的电子邮件来修复它。
  request.accept = Mime::JSON.to_s
  get :index, {}, {}
  expect(response.status).to eq(200)