我有一个请求规范,它应该在AnagramsController中点击show动作。
这是我的路线文件的样子
resources :anagrams, only: [] do
get '/', to: 'anagrams#show', on: :collection
end
当我耙我的路线时,我可以看到我有我想要的路线:
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
我希望测试能够在我的控制器中点击show动作
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
然而,当我运行规范时,我看到了:
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
我在控制器的show动作中有一个binding.pry,并且规格没有击中撬。
答案 0 :(得分:0)
我没有看到完整的代码,但是你的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