错误的参数单元测试

时间:2012-02-17 09:43:29

标签: ruby-on-rails ruby testing

美好的一天每一个我只是想知道什么似乎是我的问题我不认为我的代码有任何问题我有一个错误的参数数错误我的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
编辑:祝贺 谢谢你帮我弄清楚什么是错的

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

你在rails 3.1中运行 红宝石1.9

感谢我们更多的力量

1 个答案:

答案 0 :(得分:0)

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