私のコードにENVキーの値の効果をテストしたい。私はこれを使用してスタブしていますルビーのキー/バリューのスタブをENV
allow(ENV).to receive(:[]).with('ADWORDS_RUN').and_return('No')
これは、別のENVキーにアクセスすることを含むようにターゲットコードを変更するまで機能していました。ターゲットコードは現在、以下の
def not_local_machine?
!ENV['LOCAL_MACHINE']
end
テストを含むエラーメッセージ
Failure/Error: get 'home'
ENV received :[] with unexpected arguments
expected: ("ADWORDS_RUN")
got: ("LOCAL_MACHINE")
Please stub a default value first if message might be received with other args as well.
スタブの私の現在の方法は、他のENVキーを一掃されたことが表示されますと上記の機能に障害が発生しました。この問題を回避するには、どのようにENVキーをスタブしますか?
これを試して、 '' 'ENV'''に' '合併' 'が定義されていないというエラーを受けました。 '' 'ENV'''のクラスはオブジェクトです。これは正しい答え、マージを実装する方法のアイデアに近いですか? – Obromios
@Obromios、マージの前に 'ENV'の後に' .to_h'を追加してハッシュに変換しました。それはうまくいくはずです。 – Mori
閉じる、変更する必要があります:ENVを 'ENV'に設定する方法については、https://www.relishapp.com/rspec/rspec-mocks/v/2-11/docs/stubbing-constants/stub-defined-constantを参照してください。私はそれに応じてあなたの答えを編集し、編集が受け入れられれば、あなたの答えを受け入れます。 – Obromios