失敗し続けるDealモデルの非常に単純なテストがあり、その理由がわかりません。
私の取引モデル:
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) expected 1 error on : title, got 2 =>なぜエラーが 2 つあるのかわからない. 1 つだけを取得する必要があり、テストはパスするはずです!
最も奇妙なこと: -rspec spec
失敗すると、検証で文字数を 195 に変更し、テストで 196 に変更すると、合格しますが、次にガードまたはサーバーを再起動すると、再び失敗し、190 と 191 に再度変更すると、再び機能しますが、ガードまたはサーバーを再起動するとすぐに
これを何度も試しましたが、いつも同じ問題です。わかりません。ガードかサーバーに問題があるようです。
なぜそれが起こるのか、どうすればこれを修正できるのか、誰にも手がかりがありますか?