Почему мой тест Rspec на проверку длины не удался? (Рельсы / охранник / RSpec)

У меня есть очень простой тест на модели сделки, который продолжает терпеть неудачу, и я не могу понять, почему.

Моя модель сделки:

class Deal < ActiveRecord::Base

belongs_to :admin_user, :foreign_key => 'admin_user_id'

attr_accessible :url_path,
              :country,
              :title,
              :description,
              :twitter_msg,
              :image_url,
              :prelaunch_date,
              :deal_launch_date,
              :deal_end_date,
              :featured,
              :admin_user_id
              :as => :admin_user

validates :title,
          presence: true,
          length: { maximum: 200 }  

Тест:

require 'spec_helper'

describe Deal do

let(:admin_user) { FactoryGirl.create(:admin_user) }

    before(:each) do
@attr = {
          url_path:    "lorem ipsum",
  country:     "France",
  title:       "lorem ipsum",
  description: "lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum",
  twitter_msg: "lorem ipsum",
  image_url:   "lorem ipsum",
  prelaunch_date:     1.days.from_now.change(hour: 10),
  deal_launch_date:   3.days.from_now.change(hour: 10),
  deal_end_date:      15.days.from_now.change(hour: 10),
  featured:           true,
  admin_user_id: 1
}

конец

describe "tests on deal models validations for TITLES" do
it { should validate_presence_of(:title) }
it { should_not allow_value(" ").for(:title) }

it "should reject deals with title that is too long" do
  long = "a" * 201
  hash = @attr.merge(:title => long)
  Deal.new(hash).should have(1).error_on(:title)
end    
end

и тест не пройден с "Тесты сделок на валидации моделей сделок для TITLES должны отклонять сделки с слишком длинным заголовком. Ошибка / Ошибка: Deal.new(hash).should have(1).error_on(:title) ожидал 1 ошибку на:title, got 2 => Я не понимаю, почему у меня 2 ошибки. Я должен получить только одну, и мой тест будет пройден!

Самое странное: - когда я делаю rspec spec он терпит неудачу - тогда, если я изменяю число проверок на 195, а в моем тесте на 196, то он проходит - но затем, когда я в следующий раз перезапускаю охрану или мой сервер, он снова терпит неудачу, и если я снова изменяюсь на 190 и 191, он снова работает, но как только я перезагружаю охрану или мой сервер

Я пробовал это много раз, и это всегда одна и та же проблема. Я не понимаю, похоже охранник или мой сервер это проблема.

Кто-нибудь знает, почему это происходит и как я могу это исправить?

2 ответа

Вы можете использовать musta matcher для проверки валидации:

it { should ensure_length_of(:title).is_at_most(200) }

С установленным камнем Следует, что вы можете сделать:

it { should validate_length_of(:title).is_at_most(200) }
Другие вопросы по тегам