Как протестировать этот код с помощью RSpec?
-
10-12-2019 - |
Вопрос
У меня есть следующий простой класс и метод HTTParty:
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
Я знаю, что это работает потому что я могу вызвать метод в консоли Rails и успешно вернуть токен.
Как я могу протестировать приведенный выше код в RSpec?
Моя первоначальная попытка не сработала:
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
Там говорится: NoMethodError: undefined method 'base_uri' for HTTParty:Module
...
Спасибо!
Решение
Поскольку вы тестируете модуль, вы можете попробовать что-то вроде этого:
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
Это создает анонимный класс и расширяет его с помощью HTTPparty
методы класса.Однако я не уверен, что ответ вернется в том виде, в каком он есть.
Не связан с StackOverflow