1

いくつかの特別なスタブ メソッドを作成し、そのメソッドが確実に存在するようにしたいと考えてstub_checkstub_chain_checkます。

例えば:

#spec/controllers/payments_controller_spec.rb`

describe PaymentsController do
  it "makes a payment" do
    # Ensure method exists, Payment.new.respond_to?(:pay)
    # the API of Payment can change and tests will pass
    raise "Stubbing wrong method Payment#pay method doesn't exists" unless Payment.new.respond_to?(:pay)
    Payment.any_instance.stub(pay: true) # We can stub method now
    # Code...
  end
end

しかし、私は何かしたいと思いますPayment.stub_check(pay: true)

4

1 に答える 1

0

spec_helper.rbファイルにヘルパーを作成できます。

def stub_check(resource, method, value, message)
  raise message unless resource.new.respond_to?(method)
  resource.any_instance.stub(method => value)
end

そしてあなたはそれを

stub_check(Payment, :pay, true, 'Stubbing wrong method Payment#pay method doesn't exists')

編集:これをスタブのように機能させたい場合は、モッカまたは使用しているマッチャーを変更する必要があるかもしれません(「any_instance」メソッドのためにモッカだと思います)

于 2013-01-21T15:40:42.110 に答える