3

Minitest中 RSpec 中的此 Doorkeeper 保护控制器的等价物是什么?

let(:token) { double :accessible? => true }

before do
  controller.stub(:doorkeeper_token) { token }
end

我想用 Minitest 测试我的,目前所有的响应都是“预期的响应是一个,但是是 <401>”

4

3 回答 3

4

基于@riffraff 的回答:

添加gem 'mocha'到您的Gemfile然后bundle installhttps://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
于 2016-03-21T21:39:35.827 回答
1

我让它工作,一旦你找到正确的方法,这很简单。

我在 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

并调用你可接受的存根?方法。

于 2015-03-09T19:39:54.437 回答
0

尝试

token = Doorkeeper::AccessToken.new(resource_owner_id: some_user.id)
YourController.any_instance.stubs(:doorkeeper_token).returns(token)

或者,如果您使用模拟库,只需模拟令牌。

于 2014-10-20T16:44:08.963 回答