2

私は戦略のテストとモックに不慣れであり、外部サービスへの呼び出しをモックする方法を理解するのに苦労しています。私が見逃しているのは簡単なことだと確信しています。正確には何がわからないのです。

Braintree gemを使用して、Braintreeゲートウェイを介したサブスクリプションサービスの料金を請求しています。UserControllerのcreateメソッドでCustomercreateメソッドとSubscriptioncreateメソッドをモックしたいと思いました。

Customer.createメソッドは次のようになります。

  result = Braintree::Customer.create(
    :first_name => @creditcard.first_name,
    :last_name => @creditcard.last_name,
    :email => @user.email
    :credit_card => {
      ...
      }
    }
  )

これにより、処理された結果の属性を含むBraintree::Successful結果オブジェクトが返されます。

私は次のようなことをしなければならないと思います:

Braintree::Customer.expects(:create).returns(...)

しかし、返品エリアには何が入りますか?偽の処理結果の属性を使用して、独自のモックアップされた成功オブジェクトを作成する必要がありますか、それともすべてを行う簡単な方法がありますか?

あなたが提供できるどんな助けにも感謝します。

4

1 に答える 1

2

次のように期待値を簡単に設定できるため、コメントまたは aまたはでOpenStruct提案されているようにを返すことができます。stubmock

Braintree::Customer.expects(:create).returns(mock(:save => true))

返されたモックはsaveメッセージを期待します (この場合は意味をなさないかもしれませんが、アイデアが得られるはずです)。

于 2010-09-04T19:45:28.177 に答える