2013-04-20 5 views
1

При попытке написать модульный тест для моделей я все равно получаю ту же ошибку и не могу ее исправить.Rails, Failed assertion, no message given

Это мой тест:

require 'test_helper' 

class ProductTest < ActiveSupport::TestCase 
test "product attirbutes 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 price must be positive" do 
    product = Product.new(title:  "My Book Title", 
          description: "yyy", 
          image_url: "zzz.jpg") 

    product.price = -1 
     # line number 19 below 
    assert product.invalid? 
    assert_equal ["must be greater than or equal to 0.01"], 
     product.errors[:price] 

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

    product.price = 1 
    assert product.valid? 
    end 

end 

Когда я бегу> тест грабли

Я получаю следующее сообщение об ошибке:

1) Failure: 
ProductTest#test_product_price_must_be_positive 
/test/models/product_test.rb:19]: 
Failed assertion, no message given. 

Вот моя модель:

class Product < ActiveRecord::Base 
validates :title, :description, :image_url, presence: true 
validates :price, numericality: {greater_then_or_equal_to: 0.01} 
validates :title, uniqueness: true 
validates :image_url, allow_blank: true, format: { 
    with: %r{\.(gif|jpg|png)\Z}i, 
    message: 'must be a url for GIF, JPG or PNG image.' 
} 
end 

Я понятия не имею, что происходит n здесь, пожалуйста, помогите!

+1

Итак, что находится на линии 19? –

ответ

2

В соответствии с MiniTest :: Assertions docs, любой метод, полученный из «утверждают» поднимет сообщение об исключении «Failed утверждения, сообщения данного» на неудачу, если не поставить дополнительный «сбщ» В параметре


несколько вещей:

  1. тестируется Активные валидаций Record, эти испытанные, производство готовых особенности библиотеки, поэтому тестирование не нужно. Для того чтобы стать более знакомы с активными валидациями Записи только идти docs, а затем играть с вашими моделями в консоли рельсы

  2. Активные записи валидации являются выполняется только при попытке «создать» или «Сохранить» модель. Например:

    my_user = User.create(name: nil, email: nil) # try save to DB - fails silently 
    my_user.valid? # => false 
    my_user.errors.messages # => {name:["can't be blank"], email:["can't be blank"]} 
    

Может исследовать некоторый futher обучения по теме, скринкасто Райан Бэйт являются большими и свободным, по большей части. Надеюсь, что это помогает

Примечание: Я надеялся присоединить еще несколько ссылок/refrences однако у меня нет точки StackOverflow сделать

1

ваша модель не так.

(линия 3)

неправильно) подтверждает: цена, numericality: {greater_then_or_equal_to: 0,01}

правильно) подтверждает: цена, numericality: {greater_than_or_equal_to: 0,01}

не «тогда», а «чем».

Смежные вопросы