Ruby on rails 4 简单的自定义匹配器不起作用
我为http响应编写了一个简单的匹配器:Ruby on rails 4 简单的自定义匹配器不起作用,ruby-on-rails-4,rspec-rails,matcher,Ruby On Rails 4,Rspec Rails,Matcher,我为http响应编写了一个简单的匹配器: RSpec::Matchers.define :http_answer? do |answer| match do response.status == answer end end 但总是这样:好的 我在请求规范中使用了它。 我错在哪里? 是否可以正确地编写这样的匹配器?请阅读 有一个内置的have_http_status匹配器,用于匹配您正在尝试执行的操作 require "rails_helper" RSpec.describe
RSpec::Matchers.define :http_answer? do |answer|
match do
response.status == answer
end
end
但总是这样:好的
我在请求规范中使用了它。
我错在哪里?
是否可以正确地编写这样的匹配器?请阅读
有一个内置的have_http_status
匹配器,用于匹配您正在尝试执行的操作
require "rails_helper"
RSpec.describe ApplicationController, :type => :controller do
controller do
def index
render :json => {}, :status => 209
end
end
describe "GET #index" do
it "returns a 209 custom status code" do
get :index
expect(response).to have_http_status(209)
end
end
end
如果出于某种原因,您仍然希望为控制器响应状态编写自己的匹配程序,请确保:
控制器规格由:type=>:Controller或如果您已设置
config.inference_spec_type_from_file_location!将它们放置在规格/控制器中。
…而且我所知道的
的优秀文档具有\u http\u状态
http\u asnwer?
是一个学习的例子。此外,我在请求/功能规范中使用了http状态,而不是控制器状态,并且它可以正常工作。我不明白的是-为什么全局变量(或非全局变量)response
在我的匹配器中不可见。