次のメソッドは、ブラウザで正常に機能します。関連するすべてのトランザクションを取得し、それらの合計金額を合計します。
wallet.rb
has_many :transactions
# Sums the transaction amounts together
def total_spent
transactions.map(&:amount).sum
end
factory.rb
FactoryGirl.define do
# Create a wallet
factory :wallet do
title 'My wallet'
end
# Create a single transaction
factory :transaction do
association :wallet
title 'My transaction'
amount 15
end
end
wallet_spec.rb
it "should get the sum of the transactions" do
transaction = FactoryGirl.create(:transaction)
wallet = transaction.wallet
wallet.total_spent.should eq 15
end
テストは失敗し続けます。受け取った金額は 0 ですが、正しい金額は 15 であると予想しています。繰り返しますが、これはブラウザで正常に動作します!
Rails 3.2、FactoryGirl 4.2 の実行