ОБНОВЛЕНИЕ: следующее, по-видимому, является результатом того, что среда Rails не загружается, когда rake test
запускает мои модульные тесты (в настоящее время только один модуль, который находится в /lib). Можно ли включить окружение из командной строки, вместо того, чтобы менять саму задачу rake? Есть ли лучший способ сделать это (за исключением использования внедрения зависимостей для введения Rails.logger, что я, вероятно, в конечном итоге и сделаю)?
Я вижу NoMethodError
в своей тестовой среде из-за следующего вызова Rails.logger.error
:
# /lib/square.rb
module Square
def self.get_total_sales_for_location(location_id, timeout: 5)
begin
url = "https://connect.squareup.com/v2/locations/#{location_id}/transactions"
headers = {Authorization: "Bearer #{ENV['SQUARE_PERSONAL_ACCESS_TOKEN']}"}
response = RestClient::Request.execute headers: headers,
method: :get,
timeout: timeout,
url: url
if response.code == 200
JSON.parse response.body
else
fail
end
rescue => error
Rails.logger.error "Square::get_total_sales_for_location - #{error.message}"
raise
end
end
end
Все это отлично работает из консоли, однако запуск моих тестов приводит к: NoMethodError: undefined method 'error' for nil:NilClass
Мое временное решение состоит в том, чтобы использовать :try
для предотвращения исключения, но это очень неудобно.
Rails.logger.log
, который не будет работать - person fkoessler   schedule 17.05.2016