我为http响应写了一个简单的匹配器:
RSpec::Matchers.define :http_answer? do |answer|
match do
response.status == answer
end
end
但它始终是:好的 我在请求规范中使用它。 我哪里错了? 是否可以正确编写这样的匹配器?
答案 0 :(得分:0)
请阅读Relish Project: Rspec Rails 3.6
有一个内置的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 => :控制器或如果你已经设置 config.infer_spec_type_from_file_location!将它们放在spec / controllers中。
...以及Define Matcher
的精美文档