Ruby on rails 规范未命中Rails API项目中的控制器操作
我有一个请求规范,它应该在AnagramsController中显示操作 这就是我的路由文件的外观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
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