2015-06-17 66 views
5

我正在做一些條帶集成測試,我想存根/模擬一些端點。我試圖做這樣的:ActionDispatch中的Stubbing方法:: IntegrationTest

Stripe::Charge.stubs(:retrieve).returns({:balance_transaction => 40}) 

,但我得到以下幾點:

NoMethodError: undefined method `stubs' for Stripe::Charge:Class 

什麼的磕碰這個正確的語法? Rails 4,Ruby 2.

編輯:這是我的完整測試方法。基本上,我的payment_succeeded webhook點擊條紋檢索費用,它是相關的餘額交易,以記錄交易費用。我使用stripe_mock來模擬webhook事件,但我寧願使用標準stubbing技術將其餘的部分剔除。請注意,即使當我將其更改爲「存根」時,它也會引發上述相同的錯誤(使用存根代替存根)。

require 'test_helper' 
require 'stripe_mock' 

class WebhooksTest < ActionDispatch::IntegrationTest 
    # called before every single test 
    def setup 
    StripeMock.start 
    end 

    # called after every single test 
    def teardown 
    StripeMock.stop 
    end 

    test 'invoice.payment_succeeded' do 
    Stripe::Charge.stubs(:retrieve).returns({:balance_transaction => 40}) 
    event = StripeMock.mock_webhook_event('invoice.payment_succeeded', { :customer => "stripe_customer1", :id => "abc123" }) 
    post '/stripe-events', id: event.id 
    assert_equal "200", response.code 
    assert_equal 1, StripeInvoicePayment.count 
    assert_equal 'abc123', event.data.object.id 
    end 
end 
+1

你使用哪個框架?更多的代碼示例可能? – Elyasin

+0

添加了我試圖運行的完整測試 – Msencenb

回答

1

看起來不正確的我在這裏的唯一事情是.stubs當它應該是.stub

+1

感謝您的回覆,我已將完整的測試方法添加到問題中。請注意,將其更改爲.stub仍然會引發相同的錯誤。部分問題是我不想使用rspec,這是一個標準的開箱即用的集成測試。 – Msencenb

0

由於您沒有使用RSpec,我會建議安裝mocha gem以獲得完整的嘲笑和樁工具選擇。這裏有一個快速入門:

# Gemfile 
gem "mocha", :group => :test 

# test/test_helper.rb 
require "mocha/mini_test" 

現在,您可以存根這樣的:

Stripe::Charge.stubs(:retrieve => {:balance_transaction => 40}) 

或者,如果您想驗證方法實際上是所謂的,你可以建立一個預期,而不是:

Stripe::Charge.expects(:retrieve) 
    .with(:id => "abc123") 
    .returns({:balance_transaction => 40}) 
相關問題