7

注文を処理し、支払いを設定し、モデルの関連付けを設定する Transaction というサービス オブジェクトを作成しました。

このクラスは、2 つのメソッドを持つ Transaction と呼ばれ、initializepay. でテストしていますspec/services/( にありapp/servicesます)。

このinitializeメソッドはaccount、注文を処理するためにユーザーから渡された およびいくつかのパラメーターを受け取ります。

payrspecでテストしようとしています。そのようなテストを実際に行うにはどうすればよいですか?この機能には多くのことが行われています。たとえば、新しいモデルを作成し、それらの間にいくつかの関連付けを設定します。

accountこれまでのところ、次のように double を作成しました 。

@account = double("account", :confirmed => true, :confirmed? => true)

ただし、Transaction Pay メソッドで使用される関数 (および関連付け) は多数あります。たとえば、これらの関連付けが呼び出されると (Transaction.payテストで呼び出すと)、エラーが返されます。

ActiveRecord::AssociationTypeMismatch:
Business(#70250016824700) expected, got RSpec::Mocks:.

businessモデルは と同じ double で、account属性として に追加されます@account。そこに新しいモデルと関連付けを作成するときに、Transaction.pay をテストするにはどうすればよいですか?

上記のように、それらすべてをモックする必要がありますか? または、それを行うより良い方法はありますか?

FactoryGirlを使っていますが、accountモデルがDeviseを使っているので使えません。Devise テスト ヘルパーはコントローラーの外では使用できません。また、サービスでテストしているため、機能しません。

4

1 に答える 1