Я знаю, что должен тестировать валидации, но я учусь, поэтому хотел бы знать, почему мой код не работает.
Среда Ruby 1.9.2, Rails 3.1, RSpect 2.6.4
Я получил модель продукта:
class Product < ActiveRecord::Base
attr_accessor :title, :description, :image_url, :price
validates_presence_of :title, :description, :image_url, :message => "can't be blank"
validates_uniqueness_of :title, :message => "must be unique"
validates_numericality_of :price, :greater_than_or_equal_to => 0.01, :message => "must be a number greater than 0"
validates_format_of :image_url, :with => %r{\.(gif|jpg|png)$}i, :message => "is a invalid image file"
end
в спецификации / models / product_spec.rb:
require 'spec_helper'
describe Product do
before(:each) do
@attr = {
:title => "Lorem Ipsum",
:description => "Wibbling is fun!",
:image_url => "lorem.jpg",
:price => 19.99
}
end
it "rejects duplicated titles" do
Product.create!(@attr)
product_with_duplicate_title = Product.new(@attr)
product_with_duplicate_title.should_not be_valid
end
end
Когда я запускаю Rspec Rack, я получаю:
Failures:
1) Product should reject if the title is duplicated
Failure/Error: product_with_duplicate_title.should_not be_valid
expected valid? to return false, got true
# ./spec/models/product_spec.rb:26:in `block (2 levels) in <top (required)>
Почему? Я также попробовал нечто подобное, используя factory_girl, и получил тот же результат ... другие тесты (не включенные здесь) для проверки пробелов, правильных имен файлов изображений и т. Д., Все работало.
Спасибо заранее.