gpt4 book ai didi

ruby-on-rails - 为什么我的 Rspec 长度验证测试失败? (rails/guard/rspec)

转载 作者:行者123 更新时间:2023-12-02 01:09:46 25 4
gpt4 key购买 nike

我对 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) 在 :title 上预期出现 1 个错误,得到 2 个=> 我不明白为什么我有 2 个错误。我应该只得到一个,我的测试就会通过!

最奇怪的是:- 当我执行 rspec spec 时失败- 然后,如果我将验证字符数更改为 195,并在我的测试中更改为 196,则它会通过- 但是,下次我重新启动守卫或我的服务器时,它又失败了如果我再次更改为 190 和 191,它会再次工作,但只要我重新启动守卫或我的服务器

我试了很多次了,都是一样的问题。没看懂,好像是守卫或者我的服务器有问题。

有人知道为什么会发生这种情况以及我该如何纠正吗?

最佳答案

您可以使用 shoulda 匹配器来测试验证:

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

关于ruby-on-rails - 为什么我的 Rspec 长度验证测试失败? (rails/guard/rspec),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18813573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com