2012-02-17 89 views
0

好的一天,每一个我只是想知道,似乎是我的问题,我不认为,即时通讯有有问题,我的代码即时通讯与错误的参数数目任何问题错误在我test_image_url测试错误的参数单元测试

============================================================================== 
SUITE test,test/unit/helpers,test/unit,test/performance,test/functional (SEED 49459) 
============================================================================== 
ActionController::TestCase 
ActionDispatch::IntegrationTest 
ActionView::TestCase 
ActiveRecord::TestCase 
ActiveSupport::TestCase 
ProductTest 
    test_image_url           0:00:00:163 ERROR 
     wrong number of arguments (1 for 0) 
     Exception `ArgumentError' at: 
     /home/led/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/testing/setup_and_teardown.rb:35:in `block in run' 
     /home/led/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:408:in `_run_setup_callbacks' 
     /home/led/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/callbacks.rb:81:in `run_callbacks' 
     /home/led/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/active_support/testing/setup_and_teardown.rb:34:in `run' 
    test_product_attributes_must_not_be_empty    0:00:00:317 PASS 
    test_product_must_be_postive_price      0:00:00:326 PASS 
ProductsHelperTest 
============================================================================== 
    pass: 2, fail: 0, error: 1 
    total: 3 tests with 10 assertions in 0.3286295 seconds 
============================================================================== 
rake aborted! 
Command failed with status (1): [/home/led/.rvm/rubies/ruby-1.9.2-p290/bin/...] 

Tasks: TOP => test:units 
(See full trace by running task with --trace) 

我的单元测试:

 require 'test_helper' 

class ProductTest < ActiveSupport::TestCase 

    def new_product 
     product = Product.new(:title => "MyBook", 
          :description => "Famouse myBook", 
          :image_url => "zz.jpg") 

    end 

    test "product attributes must not be empty" do 
     product = Product.new 
     assert product.invalid? 
     assert product.errors[:title].any? 
     assert product.errors[:description].any? 
     assert product.errors[:price].any? 
     assert product.errors[:image_url].any? 
    end 

    test "product must be postive price" do 
     product = Product.new(:title => "MyBook", 
          :description => "Famouse myBook", 
          :image_url => "zz.jpg") 

     product.price = -1 
     assert product.invalid? 
     assert_equal "must be greater than or equal to 0.01", 
     product.errors[:price].join('; ') 

     product.price = 0 
     assert product.invalid? 
     assert_equal "must be greater than or equal to 0.01", 
     product.errors[:price].join('; ') 

     product.price = 1 
     assert product.valid? 
    end 


    test "image url" do 
     ok = %w{fred.gif fred.jpg fred.png FRED.JPG FRED.PNG FRED.GIF 
        http://a.b.c/x/y/z/fred.gif} 
      bad = %w{fred.doc fred.gif/more fred.gif.more}  

      ok.each do |name| 
       assert new_product(name).valid?, "#{name} shoudn't be invalid" 
      end 


      bad.each do |b| 
      assert new_product(name).invalid?, "#{name} shoudn't be valid" 
      end 
     end 








end 

编辑:sovled 感谢帮助我想通了,什么是错

require 'test_helper' 

class ProductTest < ActiveSupport::TestCase 

    def new_product(image_url) 
     product = Product.new(:title => "MyBook", 
          :description => "Famouse myBook", 
          :price => 1 , 
          :image_url => image_url) 

    end 

    test "product attributes must not be empty" do 
     product = Product.new 
     assert product.invalid? 
     assert product.errors[:title].any? 
     assert product.errors[:description].any? 
     assert product.errors[:price].any? 
     assert product.errors[:image_url].any? 
    end 

    test "product must be postive price" do 
     product = Product.new(:title => "MyBook", 
          :description => "Famouse myBook", 
          :image_url => "zz.jpg") 

     product.price = -1 
     assert product.invalid? 
     assert_equal "must be greater than or equal to 0.01", 
     product.errors[:price].join('; ') 

     product.price = 0 
     assert product.invalid? 
     assert_equal "must be greater than or equal to 0.01", 
     product.errors[:price].join('; ') 

     product.price = 1 
     assert product.valid? 
    end 


    test "image url" do 
     ok = %w{fred.gif fred.jpg fred.png FRED.JPG FRED.PNG FRED.GIF 
        http://a.b.c/x/y/z/fred.gif} 
      # bad = %w{fred.doc fred.gif/more fred.gif.more}  
      bad = %w{ fred.doc fred.gif/more fred.gif.more } 

     ok.each do |name| 
     assert new_product(name).valid?, "#{name} shouldn't be invalid" 
     end 
     bad.each do |name| 
     assert new_product(name).invalid?, "#{name} shouldn't be valid" 
     end 

=begin 
      ok.each do |name| 
       assert new_product(name).valid?, "#{name} shoudn't be invalid" 
      end 
      bad.each do |name| 
      assert new_product(name).invalid?, "#{name} shoudn't be valid" 
      end 
=end 

     end 
end 

庵在轨运行3.1 红宝石1.9

感谢更多的权力,我们

+0

你可以发布你的通过测试,或者整个测试文件? – bdon 2012-02-17 09:52:45

+0

@bdon文件已发布感谢您的关注 – Led 2012-02-17 11:23:10

回答

0

我无法弄清楚您的问题。因为您在上面的代码中没有使用任何setup,teardown方法。提供完整的测试用例或只检查方法setupteardown有任何参数操作。这个问题只与此有关。