2016-11-17 3 views
1

デフォルト値を設定した後で気がつきましたが、リクエストする直前に値を変更することはできません。RSpecリクエストテスト - モックでリクエストを送信する前に値を割り当てます。

このリクエストを処理するメソッド内の値をチェックすると、event.data.object.closed = falseと表示されます。

次のコードは単なる例に過ぎません。

require 'rails_helper' 

describe "stripe_invoice_created_webhook", type: :request do 

    let(:invoice){ create(:invoice, account_id: account.id) } 
    let(:account){ create(:account, 
         stripe_customer_id: event.data.object.customer)} 
    let(:event){ StripeMock.mock_webhook_event('invoice.created', { 
    closed: false 
    }) } 

    it 'responds 200 to invoice_created webhook with valid endpoint' do 
    event.data.object.closed = true 
    post '/stripe-events', event.as_json 
    expect(response.status).to eq 200 
    end  
end 

任意のアイデアをどのように右の主な質問は、いくつかの

===更新(2016年11月17日)===========

送信する前に値を変更するにはモック値を効率的に変更するにはどうしたらいいですか?

私はそれぞれのようなものを書くことができました。

event = StripeMock.mock_webhook_event('invoice.created', {closed: true }) 

それは動作し、主な問題は、私はいつものようにきれいlet(:foo)でそれを作ることができる方法ですか?

+0

あなたが書きたいコードを共有することができます...値テストでその後

let(:closed_response) {false} let(:event){ StripeMock.mock_webhook_event('invoice.created', { closed: closed_response }) } 

のための変数を使用することですのためのテスト? –

答えて

0

mock_webhook_eventはちょうどモックで、適切な呼び出しに対する疑似応答です。あなたがしようとしているのは、それが実際のオブジェクトであるかのように、即座に模擬応答を変更することです。

良い(やや冗長ではあるが)

closed_response = true 
post '/stripe-events', event.as_json 
+0

答えに感謝します!しかし、私はまだ同じ結果を得る... 'false'値。 – Tosh

+0

あなたは 'closed_response'割り当ての前に' event'を参照していますか?いったん参照すると、 ':closed'の値がロックインされます。テストの最初の行に' closed_response = true'を設定する必要があります。 – SteveTurczyn

+0

'closed_response'の割り当ては、テストブロックの行の先頭にあります。 – Tosh

関連する問題