单元测试与rails中的灯具的多态关联4
问题描述:
我需要单元测试一个促销模型,其中每个广告系列都有一个URL。促销活动和reference_link之间存在多态关联。参考链接夹具 reference_link: linkable: fix_1 (PromoCode)
单元测试与rails中的灯具的多态关联4
我该如何说服Rails确定促销夹具的确有一个属于它的URL?
在优惠测试辅助
test "should have a URL associated with the promo code" do
promo_code = promo_codes(:fix_1)
promo_code.reference_link.url = nil
assert_not promo_code.valid?
promo_code2 = promo_codes(:fix_2)
assert promo_code2.valid?
端
promocode.rb
类促销码<的ActiveRecord ::基地
belongs_to :reward
has_one :reference_link, as: :linkable, dependent: :destroy
validates :email, presence: true
validates :code, presence: true
端
reference_link.rb
类ReferenceLink <的ActiveRecord :: Base的 belongs_to的:可连接,多态:真,摸:真
validates :link_name, presence: true
validates :link_url, presence: true
validates_format_of :link_url, :with => /\A#{URI::regexp(['http', 'https'])}\z/
validates_length_of :link_url,:link_name, :maximum => 255
末
答
这很简单,你几乎是正确的。首先,确保灯具的设置是否正确:
# promo_codes.yml
promo_1:
email: '[email protected]'
name: 'Foobar'
# reference_links.yml
reference_1:
linkable: promo_1
link_name: 'lorem'
link_url: 'http://loremipsum.com'
测试:
# promotion_test.rb
test "should have a URL associated with the promo code" do
promo_code = promo_codes(:promo_1)
assert_eq true, promo_code.reference_link.present?
end
不要忘记,文件命名是公约的一个重要组成部分是Rails的使用。