2016-12-24 67 views
0

我需要单元测试一个促销模型,其中每个广告系列都有一个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 

回答

0

这很简单,你几乎是正确的。首先,确保灯具的设置是否正确:

# 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的使用。