- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有带 Grape API 的 Rails 应用。
接口(interface)由 Backbone 完成,Grape API 为其提供所有数据。
它返回的都是用户特定的东西,所以我需要引用当前登录的用户。
简化版如下所示:
API 初始化:
module MyAPI
class API < Grape::API
format :json
helpers MyAPI::APIHelpers
mount MyAPI::Endpoints::Notes
end
end
端点:
module MyAPI
module Endpoints
class Notes < Grape::API
before do
authenticate!
end
# (...) Api methods
end
end
end
API 助手:
module MyAPI::APIHelpers
# @return [User]
def current_user
env['warden'].user
end
def authenticate!
unless current_user
error!('401 Unauthorized', 401)
end
end
end
因此,如您所见,我从 Warden 获取了当前用户并且它工作正常。但问题在于测试。
describe MyAPI::Endpoints::Notes do
describe 'GET /notes' do
it 'it renders all notes when no keyword is given' do
Note.expects(:all).returns(@notes)
get '/notes'
it_presents(@notes)
end
end
end
我如何将帮助者的方法 *current_user* 与某些特定用户 stub ?
我试过:
编辑:目前,它是这样 stub 的:
规范:
# (...)
before :all do
load 'patches/api_helpers'
@user = STUBBED_USER
end
# (...)
规范/补丁/api_helpers.rb:
STUBBED_USER = FactoryGirl.create(:user)
module MyAPI::APIHelpers
def current_user
STUBBED_USER
end
end
但这绝对不是答案:)。
最佳答案
此issue中提到的评论应该可以帮助你,这就是 Grape 测试它的助手的方式,
https://github.com/intridea/grape/blob/master/spec/grape/endpoint_spec.rb#L475(如果由于更改而代码不在同一行,只需执行 ctrl+f 并寻找帮助者)
这是来自同一个文件的一些代码
it 'resets all instance variables (except block) between calls' do
subject.helpers do
def memoized
@memoized ||= params[:howdy]
end
end
subject.get('/hello') do
memoized
end
get '/hello?howdy=hey'
last_response.body.should == 'hey'
get '/hello?howdy=yo'
last_response.body.should == 'yo'
end
关于ruby-on-rails - Stubbing 葡萄 helper ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16498579/
我正在尝试在 ruby 中创建一个 Restful json api - 所以我在 Rack 中使用 grape ( https://github.com/intridea/grape )。我没有
我正在研究一个示例 Ruby/Grape 示例,除了 json 被转义外,一切正常。我也是全新的 ruby 及其框架(仅 3 天),如果这个问题是补救性的并且提前谢谢你,我很抱歉 我相当确定不应该
我的 Grape 应用程序有几个错误处理程序,最后包括: rescue_from :all, backtrace: true do |e| message = { errors: { all: e
我有带 Grape API 的 Rails 应用。 接口(interface)由 Backbone 完成,Grape API 为其提供所有数据。 它返回的都是用户特定的东西,所以我需要引用当前登录的用
我的 Grape API 接受 json 格式,我有接受 JSON 作为参数的方法: desc 'JSON test' params do requires :json, type: JSON e
如何避免重复代码? resource 'api/publication/:publicationName' do params do requires :type, type: Strin
首先: 我正在使用 grape 构建我的 API (Rails 4)。当有人发送无效的 JSON 正文时(例如忘记最后一个 }),会引发以下错误: ActionDispatch::ParamsPars
我正在尝试让 Grape API 以 json 格式回答其所有动词。问题是我无法回答 json 格式的路由错误。我什至无法挽救 ActionController::RoutingError。 我已阅读
我正在用 grape 编写一个 API 服务器,我选择使用 grape-entity 因为它能够自动生成 swagger 的文档。但是现在我在按要求设置参数时遇到了问题。因为葡萄不验证参数是否存在。看
在 Grape 中,如果您使用 错误! 方法它会抛出一个错误并且永远不会调用 Grape::Endpoint “after”回调。 我希望应用程序在出错时调用后 Hook !已被调用。 我添加了这个中
我正在使用 Grape on Rails 4.2 构建 API。这是 GitHub 上的 repo 链接. 在前端,我有一个用 EmberJS 构建的 JavaScript 应用程序。这是 GitHu
使用 grape 从 json 创建新的 ActiveRecord 的正确方法是什么?我是否在我的用户模型中使用 attr_accessible 来避免 ActiveModel::ForbiddenA
我是一名优秀的程序员,十分优秀!