我很想在rspec中使用rswag来记录REST和同时编写测试。我正在尝试放松教程和文档,但我无法让sign_in端点工作( 设计-会议 )。
当我运行rspec时,我会收到状态代码错误。
require 'swagger_helper'
require 'rails_helper'
require 'shared_context'
describe 'Sonaaar REST API', type: :request do
...
path '/users/sign_in' do
post 'Sign In' do
tags 'Session'
consumes 'application/json'
produces 'application/json'
parameter name: :user, in: :body, schema: {
type: :object,
properties: {
email: { type: :string },
password: { type: :string },
},
required: ['email', 'password']
}
response '201', 'sign in', { 'HTTP_ACCEPT' => "application/json" } do
response '201', 'sign in', { 'HTTP_ACCEPT' => "application/json" } do
#
# let(:user) do
# create(:user, email: 'email@domain.com', password: 'Password1')
# end
#Error
# Failure/Error:
# raise UnexpectedResponse,
# "Expected response code '#{response.code}' to match '#{expected}'\n" \
# "Response body: #{response.body}"
#
# Rswag::Specs::UnexpectedResponse:
# Expected response code '401' to match '201'
# Response body: {"error":"You need to sign in or sign up before continuing."}
let(:user) { { user: { login: 'email@domain.com', password: 'Password1' } } }
# Rswag::Specs::UnexpectedResponse:
# Expected response code '401' to match '201'
# Response body: {"error":"You need to sign in or sign up before continuing."}
# /Users/filip/.rvm/gems/ruby-2.7.1/gems/rswag-specs-2.4.0/lib/rswag/specs/r
run_test!
end比我有RSpec错误:
1) Sonaaar REST API /users/sign_in post sign in returns a 201 response
Failure/Error:
raise UnexpectedResponse,
"Expected response code '#{response.code}' to match '#{expected}'\n" \
"Response body: #{response.body}"
Rswag::Specs::UnexpectedResponse:
Expected response code '401' to match '201'
Response body: {"error":"You need to sign in or sign up before continuing."}身份验证:JWT-令牌内容类型: application/json Stack/Gems:
发布于 2021-03-09 12:04:08
请求规范需要更多帮助,而不仅仅是为特性规范工作的普通监狱长助手:
RSpec.configure do |config|
config.include Warden::Test::Helpers
end添加到rails_helper或其他文件,并在rails_helper中要求:
module DeviseRequestSpecHelpers
include Warden::Test::Helpers
def sign_in(user)
login_as(user, scope: :user)
end
def sign_out
logout(:user)
end
end然后在rails_helper中添加
RSpec.configure do |config|
config.include DeviseRequestSpecHelpers, type: :request
end您现在应该可以在请求规范中使用以下内容登录:
context 'some context' do
scenario 'some scenario' do
login_as(user)
end
end发布于 2022-01-19 15:14:27
就像萨姆说的,但实际上你可以把狱警的帮手也包括进来
RSpec.configure do |config|
config.include Warden::Test::Helpers
end然后
let(:admin) { create(:admin) } # for this case it's devise :admins
before do
login_as(admin, scope: :admin)
end
# If you want to logout admin
after do
logout(:admin)
end
it 'should return 200 'do
get 'some_path_that_needs_session'
expect(response).to have_http_status(200)
end您可以参考监狱长::测试::帮手文档
https://stackoverflow.com/questions/66519091
复制相似问题