Minitest中 RSpec 中的此 Doorkeeper 保护控制器的等价物是什么?
let(:token) { double :accessible? => true }
before do
controller.stub(:doorkeeper_token) { token }
end
我想用 Minitest 测试我的,目前所有的响应都是“预期的响应是一个,但是是 <401>”
Minitest中 RSpec 中的此 Doorkeeper 保护控制器的等价物是什么?
let(:token) { double :accessible? => true }
before do
controller.stub(:doorkeeper_token) { token }
end
我想用 Minitest 测试我的,目前所有的响应都是“预期的响应是一个,但是是 <401>”
基于@riffraff 的回答:
添加gem 'mocha'
到您的Gemfile
然后bundle install
(https://github.com/freerange/mocha)
为您的测试添加一些助手:
# test/test_helper.rb
# ...
require "mocha/test_unit"
class ActiveSupport::TestCase
fixtures :all
# ...
def sign_in user
token = Doorkeeper::AccessToken.new(resource_owner_id: user.id)
ApplicationController.any_instance.stubs(:doorkeeper_token).returns(token)
end
end
在你的测试中使用你的新助手:
test 'Whatever you want' do
sign_in users(:one) # here is an example using fixtures
# Do your get / post / etc
# Do your assertions
end
我让它工作,一旦你找到正确的方法,这很简单。
我在 test_helper.rb 中创建了一个新类
class StubToken
def acceptable?(value)
true
end
end
然后,您可以使用此类通过调用以下命令绕过令牌要求:
@controller.instance_variable_set('@_doorkeeper_token', StubToken.new)
由于 @_doorkeeper_token 在 Doorkeeper::helpers 中定义了以下代码,因此将解析为您的存根对象。
文件“lib/doorkeeper/rails/helpers.rb”,第 21 行
@_doorkeeper_token ||= OAuth::Token.authenticate request, *Doorkeeper.configuration.access_token_methods
并调用你可接受的存根?方法。
尝试
token = Doorkeeper::AccessToken.new(resource_owner_id: some_user.id)
YourController.any_instance.stubs(:doorkeeper_token).returns(token)
或者,如果您使用模拟库,只需模拟令牌。