我对一直失败的 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) 预期出现 1 个错误:标题,得到 2 =>我不明白为什么我有 2 个错误。我应该只得到一个,我的测试就会通过!
最奇怪的事情:-当我这样做rspec spec
失败时-然后,如果我将验证字符数更改为 195,并且在测试中更改为 196,它就会通过-但是,下次我重新启动警卫或服务器时,它就会通过再次失败,如果我再次更改为 190 和 191,它会再次运行,但只要我重新启动警卫或我的服务器
我尝试了很多次,它总是同样的问题。我不明白,看来守卫还是我的服务器有问题。
有没有人知道为什么会发生这种情况以及我该如何纠正?