测试一对多关系工作

Test one to many relationship working

在我的 rails api 中,我有多个具有一对多关系的模型,我想要一种方法来测试我没有遗漏任何设置它们的方法。 Minitest 中测试一对多关系是否设置正确的最佳方法是什么?我想看到的是一张收据上可以有很多销售额。

test 'multiple sales can have one receipt' do
 sale = Sale.new
 sale.receipt = 1234
 sale.save

 sale2 = Sale.new
 sale2.receipt = 1234
 sale2.save


 assert_equal sale.invoice_id, sale2.invoice_id, "receipts are not the same"
end

shoulda-matchers gem 是我测试此类关联的首选 gem。省去了手动测试关联的所有可能场景的单调乏味。

https://github.com/thoughtbot/shoulda

只需将 gem 添加到您的 Gemfile 中,您就可以像这样编写测试...

class UserTest < Test::Unit::TestCase
  should have_many(:posts)
end

我会这样测试:

test 'one receipt can have multiple sales' do
  receipt = Receipt.last
  sale1 = receipt.sales.create
  sale2 = receipt.sales.create

  assert receipt.sales.size > 1, "receipt should have multiple sales"
  assert_equal sale1.receipt, sale2.receipt, "receipts are not the same"
end