2012-03-04 39 views
0

我有以下型号Product并测试相同。当我尝试运行测试时,在第22行的有效值assert product.valid?上断言失败。 请问为什么?Rails测试失败,有效值

代码:

require 'test_helper' 

class ProductTest < ActiveSupport::TestCase 
test "product must not accept with empty attributes" do 
    product = Product.new 
    assert product.invalid? 
    assert product.errors[:title].any? 
    assert product.errors[:description].any? 
    assert product.errors[:price].any? 
end 

test "product must not acept invalid amount values" do 
    product = Product.new(:title => "test title", 
         :description => "test description", 
         :image_url => "image_url" 
         ) 
    product.price = -1 
    assert product.invalid? 
    product.price = 0 
    assert product.invalid? 
    product.price = 1 
    # Line number 22 below 
    assert product.valid? 
end 
end 

而且

class Product < ActiveRecord::Base 
    validates :title, :description, :image_url, :presence => true 
    validates :price, :numericality => {:greater_than_or_equal_to => 0.01} 
    validates :title, :uniqueness => true 
    validates :image_url, :format => { 
    :with => %r{\.(gif|png|jpg)$}i, 
    :message => 'must be a URL for image' 
    } 
end 

This is the error

+0

请从您的编辑器发布代码而不是截图。这样人们可以更容易地剪切和粘贴。 – Telemachus 2012-03-04 11:21:17

+0

@Telemachus对不起。但是,如何在粘贴代码时启用行号? – nobody 2012-03-04 11:31:19

+0

我不认为有办法。您只需在第22行中添加注释,并说'#第22行 - 应该是有效的'或类似的。 – Telemachus 2012-03-04 11:36:34

回答

2

你IMAGE_URL根据模型声明中的验证是无效的。

+0

我感到惭愧:(。谢谢! – nobody 2012-03-04 11:49:26

+0

不要感到羞耻!我建议组合一组有效的模型属性以便在测试中重用。 – 2012-03-04 11:50:19

+0

对不起,请问一个问题。人们如何调试ruby代码(我来自eclipse和java,其中调试非常简单)? – nobody 2012-03-04 11:56:09