【发布时间】:2015-12-20 18:18:26
【问题描述】:
在测试我的控制器时,我实际上遇到了一种奇怪的行为。我有一个UsersController,它有两种方法,me 和update_me:
class UsersController < ApplicationController
def me
# some code
end
def update_me
# some code
end
end
对应的路线是:
Rails.application.routes.draw do
get :me, to: 'users#me'
patch :me, to: 'users#update_me'
end
在测试GET /me 时,一切正常,所有测试均通过:
RSpec.describe Api::V1::UsersController do
describe '#me' do
it 'respond with a 200 ok status' do
get :me, format: :json, access_token: user_token.token
expect(response.status).to eq 200
end
# more tests
end
end
但是当我尝试向我提出补丁请求时:
RSpec.describe Api::V1::UsersController do
describe '#update_me' do
it 'respond with a 200 ok status' do
patch :me, format: :json, user: attributes, access_token: user_token.token
expect(response.status).to eq 200
end
# more tests
end
end
RSpec 实际上在UsersController 的第17 行向我显示了一个错误,这实际上是与def me 方法相关的行,它实际上应该是def update_me。
所以我在update_me 中添加了一个raise,并意识到这个方法实际上从未被RSpec 调用过。但是,当使用 Postman 测试真实案例场景时,一切正常,我可以正确地 get 和 patch 用户。
任何帮助将不胜感激。
【问题讨论】: