3

以下のコードでは、コメントでマークされた行 (スニペットの下部近く) でエラーが発生しています: undefined methodmock_transaction_input'`

mock_transaction_inputメソッドは上記で定義されているため、理由がわかりません。私がやっていることと、この記事の最初の例との違いがわかりません。.

どんな助けでも大歓迎です!

require 'spec_helper'

describe Transaction do

    def mock_transaction_input input
        ret = double "TransactionInput"
        input.each do |method, mock_return| 
            ret.stub(method).and_return(mock_return)
        end
        ret
    end

    describe "basic calculations" do

        examples = {
            :example_one => {
                :in => {:amount => 10, :alcohol => 5, :tip => 2, :anywhere_credit => 3, :merchant_credit => 1, :initial_subsidy => 0.25, :initial_subsidy_per => 1, :repeat_subsidy => 0, :repeat_subsidy_per => 0, :deal_subsidy => 0, :our_cut => 0.2, :tax_rate => 0.0825, :cc_fee_waived? => false, :cut_on_tax? => true, :cut_on_tip? => true, :deal_redeemed? => false},
                :out => { :our_cut => -0.11 , :merchant_cut => 12.58, :gross_sale => 17, :net_sale => 16.25, :merchant_cc_fee => 0.42}
            },

        }

        examples.each do |name, input_output| 

            input = input_output[:in]
            output = input_output[:out]

            # ERROR HERE
            transaction = Transaction.new(mock_transaction_input input)

            output.each do |method, expected_return|
                it "should return #{expected_return} when #{method} is called" do
                    transaction.send(method).should == expected_return
                end
            end
        end
    end
end
4

1 に答える 1

2

簡単な答え-mock_transaction_inputメソッドは、itまたはspecifyコンテキストでのみ使用できます。サンプルグループでこのメソッドを使用するには、このメソッドをクラスメソッドとして定義する必要がありますdef self.mock_transaction_input

ドキュメントを確認してください:https ://www.relishapp.com/rspec/rspec-core/docs/helper-methods/define-helper-methods-in-a-module

于 2012-09-03T10:54:56.197 に答える