Question

J'ai la classe simple et la méthode HTTParty suivantes :

class Token
  require 'httparty'

  include HTTParty
  base_uri 'https://<some url>'
  headers 'auth_user' => 'user'
  headers 'auth_pass' => 'password'
  headers 'auth_appkey' => 'app_key'

  def self.getToken
    response = get('/auth/token')
    @token = response['auth']['token']
  end
end

je sais que ça marche car je peux appeler la méthode dans la console Rails et réussir à récupérer un jeton.

Comment puis-je tester le code ci-dessus dans RSpec ?

Ma première tentative ne fonctionne pas :

describe Token do
  before do
    HTTParty.base_uri 'https://<some url>'
    HTTParty.headers 'auth_user' => 'user'
    HTTParty.headers 'auth_pass' => 'password'
    HTTParty.headers 'auth_appkey' => 'app_key'
  end

  it "gets a token" do
    HTTParty.get('auth/authenticate')
    response['auth']['token'].should_not be_nil
  end
end

Ça dit: NoMethodError: undefined method 'base_uri' for HTTParty:Module...

Merci!

Était-ce utile?

La solution

Puisque vous testez un module, vous pouvez essayer quelque chose comme ceci :

describe Token do
   before do
      @a_class = Class.new do
         include HTTParty
         base_uri 'https://<some url>'
         headers 'auth_user' => 'user'
         headers 'auth_pass' => 'password'
         headers 'auth_appkey' => 'app_key'
      end
   end

   it "gets a token" do
      response = @a_class.get('auth/authenticate')
      response['auth']['token'].should_not be_nil
   end
end

Cela crée une classe anonyme et l'étend avec HTTPpartyLes méthodes de classe de .Cependant, je ne suis pas sûr que la réponse reviendra telle que vous l'avez reçue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top