测试一对多关系工作
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
在我的 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