Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/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
Ruby on rails 规范未命中Rails API项目中的控制器操作_Ruby On Rails_Json_Rspec - Fatal编程技术网

Ruby on rails 规范未命中Rails API项目中的控制器操作

Ruby on rails 规范未命中Rails API项目中的控制器操作,ruby-on-rails,json,rspec,Ruby On Rails,Json,Rspec,我有一个请求规范,它应该在AnagramsController中显示操作 这就是我的路由文件的外观 resources:anagrams,仅限:[]执行 获取“/”,转到::collection上的“anagrams#show” 结束 当我搜索我的路线时,我可以看到我有我想要的路线: anagrams GET/anagrams(:format)anagrams#show 我运行的请求规范如下所示 require "rails_helper" RSpec.describe "Anagram AP

我有一个请求规范,它应该在AnagramsController中显示操作

这就是我的路由文件的外观
resources:anagrams,仅限:[]执行
获取“/”,转到::collection上的“anagrams#show”
结束

当我搜索我的路线时,我可以看到我有我想要的路线:
anagrams GET/anagrams(:format)anagrams#show

我运行的请求规范如下所示

require "rails_helper"

RSpec.describe "Anagram API", type: :request do

  describe "GET /anagrams" do
    context "fetch for words with anagrams" do

      it "finds the anagrams" do
        get "/anagrams", params: {word: ["read"]}
        expect(JSON.parse(response.body)).to eq(["dare", "dear"])
        expect(response).to have_http_status(200)
      end
    end
  end
end
我希望测试能在我的控制器中发挥作用

class AnagramsController < ApplicationController

  def show
    word_passed_in = params[:word].first
    results = AnagramFinder.fetch_anagrams(word_passed_in)
    end
    json_response(results)
  end

  private
  def anagram_params
    params.require(:word)
  end

end
类AnagramsController
但是,当我运行规范时,我看到:

F

Failures:

  1) Anagram API GET /anagrams fetch for words with anagrams finds the anagrams
     Failure/Error: expect(JSON.parse(response.body)).to eq(["dare", "dear"])

     JSON::ParserError:
       757: unexpected token at '<!DOCTYPE html>
       <html>
       <head>
           <title>SyntaxError at /anagrams</title>
       </head>
       <body>
           <style>
           /* Basic reset */
           * {
               margin: 0;
               padding: 0; and on and on and on
F
失败:
1) 字谜API GET/anagrams fetch用于查找字谜词
失败/错误:expect(JSON.parse(response.body)).to eq([“dare”,“dear”])
JSON::ParserError:
757:在'
语法错误/字谜
/*基本重置*/
* {
保证金:0;
填充:0;并且不停地重复

我在控制器中的show action中有一个binding.pry,并且规范没有达到要求。

我没有看到完整的代码,但是您在show action中有一个额外的结尾

 def show
    word_passed_in = params[:word].first
    results = AnagramFinder.fetch_anagrams(word_passed_in)
    end
    json_response(results)
  end
应该是

 def show
    word_passed_in = params[:word].first
    results = AnagramFinder.fetch_anagrams(word_passed_in)

    json_response(results)
  end

我看不到完整的代码,但你在表演中有一个额外的结尾

 def show
    word_passed_in = params[:word].first
    results = AnagramFinder.fetch_anagrams(word_passed_in)
    end
    json_response(results)
  end
应该是

 def show
    word_passed_in = params[:word].first
    results = AnagramFinder.fetch_anagrams(word_passed_in)

    json_response(results)
  end