我创建了一个名为 Transaction 的服务对象,它处理订单,设置付款,然后设置模型关联。
该类称为 Transaction 具有两个方法,initialize
和pay
. 我正在测试它spec/services/
(它在app/services
)。
该initialize
方法接受account
用户传入的一个和一些参数来处理订单。
我正在尝试pay
使用 rspec 进行测试。我该如何做这样的测试?这个功能有很多事情要做。例如,它创建新模型,然后在它们之间建立一些关联。
到目前为止,我创建了一个 double account
如下:
@account = double("account", :confirmed => true, :confirmed? => true)
但是,交易支付方法中使用了许多功能(和关联)。因此,例如,当调用这些关联时(一旦我Transaction.pay
在测试中调用),它会返回一个错误:
ActiveRecord::AssociationTypeMismatch:
Business(#70250016824700) expected, got RSpec::Mocks:.
该business
模型就像 一样是双重的account
,并作为属性添加到@account
. 当 Transaction.pay 在其中创建新模型和关联时,如何测试它?
如上所示,我是否需要模拟所有这些?或者有更好的方法吗?
我正在使用 FactoryGirl,但我无法使用它,因为我的account
模型使用的是 Devise。设计测试助手不能在控制器之外使用,因为我在服务中进行测试,所以它不起作用。