2016-05-17 6 views
0

更新:ユニットテスト(現在は/ libにある1つのモジュールのみ)がrake testで実行されると、Rails環境がロードされていないためです。レーキタスク自体を変更するのではなく、コマンドラインから環境を含めることは可能ですか?これについてもっと良い方法がありますか(Rails.loggerを導入するために依存性注入を使用するのは簡単ではありません。Rails.loggerはテスト環境では何故ですか?

私はRails.logger.errorにあるため、次の呼び出しの私のテスト環境でNoMethodErrorを見ている:

# /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を使用することですが、それは非常にクルージングです。

+1

あなたのコードサンプルでは動作しないRails.logger.logを使用しています –

+0

Rails.logger.infoまたはRails.logger.debug –

+0

それを指摘してくれてありがとう。私のコードは実際には「エラー」を使用していますが、それは翻訳で失われました。 – pdoherty926

答えて

0

rake environment testとすることができます。しかし、私はテストタスクを環境に依存させるだけでいいと思います。task test: :environment do

関連する問題