- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 rspec 和 shoulda 匹配器作为我的新测试框架,但我对如何获得 should validate_uniqueness_of(:attribute)
感到有些困惑。测试通过。这是我的简单模型:
class Employee < ActiveRecord::Base
validates :name, presence: true
validates :title, presence: true
validates :department, presence: true
validates :avatar, presence: true
validates :email, presence: true, uniqueness: true
validates :reports_to, presence: true
mount_uploader :avatar, EmployeeAvatarUploader, on: :file_name
end
RSpec.describe Employee, type: :model do
it { should validate_presence_of(:name) }
it { should validate_presence_of(:title) }
it { should validate_presence_of(:department) }
it { should validate_presence_of(:avatar) }
it { should validate_presence_of(:email) }
it { should validate_uniqueness_of(:email) }
it { should validate_presence_of(:reports_to) }
end
`1) Employee should validate uniqueness of email
Failure/Error: should validate_uniqueness_of(:email)
Shoulda::Matchers::ActiveRecord::ValidateUniquenessOfMatcher::ExistingRecordInvalid:
validate_uniqueness_of works by matching a new record against an
existing record. If there is no existing record, it will create one
using the record you provide.
While doing this, the following error was raised:
PG::NotNullViolation: ERROR: null value in column "title" violates not-null constraint
DETAIL: Failing row contains (21, null, null, null, null, null, null, 2017-06-27 01:07:49.125445, 2017-06-27 01:07:49.125445, null, null).
: INSERT INTO "employees" ("created_at", "updated_at") VALUES ($1, $2) RETURNING "id"
The best way to fix this is to provide the matcher with a record where
any required attributes are filled in with valid values beforehand.`
RSpec.describe Employee, type: :model do
it { should validate_presence_of(:name) }
it { should validate_presence_of(:title) }
it { should validate_presence_of(:department) }
it { should validate_presence_of(:avatar) }
it { should validate_presence_of(:email) }
it 'should validate uniqueness of email' do
email1 = FactoryGirl.create(:account, email: 'email@blackducksoftware.com')
email2 = FactoryGirl.build(:account, email: 'email@blackducksoftware.com' )
should validate_uniqueness_of(:email)
end
it { should validate_presence_of(:reports_to) }
end
最佳答案
你应该可以这样称呼它:
describe "validations" do
subject { Employee.new(title: "Here is the content") }
it { should validate_uniqueness_of(:email) }
end
FactoryGirl
:
describe "validations" do
subject { FactoryGirl.build(:employee) }
it { should validate_uniqueness_of(:email) }
end
employees
表有一个需要
title
的数据库级约束,因此您需要创建一个有效的
employee
对象第一。
account
而不是
employee
.
关于ruby-on-rails - 如何正确使用具有唯一性验证的 shoulda 匹配器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44770908/
我遇到了一个问题,我的模型上的自定义验证导致所有 shoulda 验证失败。 本质上: class User birthday errors.add(:birthday, "Some s
请帮忙: 我想用 minitest 来使用 shoulda。 这是我得到的异常: NoMethodError: undefined method `run_teardown_hooks' for #:
请帮忙: 我想用 minitest 来使用 shoulda。 这是我得到的异常: NoMethodError: undefined method `run_teardown_hooks' for #:
我有一个 User 模型,它有一个 items 的子关联。项目的 :name 对用户来说应该是唯一的,但它应该允许不同的用户拥有同名的项目。 Item 模型当前设置为: class Item < Ap
在 Rails Test Prescriptions 一书中(b10.0,第 176 页),有如下所示的单行断言示例: 应该“成功”{ assert_response :success } 这对我来说
我是单元测试领域的新手;我现在只使用单元测试大约 2 个月。当我在 Ruby 中进行单元测试时,我目前遵循 TDD 风格并使用 Test::Unit::TestCase。我还阅读了 RSpec 以及它
我正在使用一些Shoulda rspec匹配器来测试我的模型,其中之一是: describe Issue do it { should_not allow_value("test").for(:p
我正在尝试使用 rspec 和 shoulda 匹配器作为我的新测试框架,但我对如何获得 should validate_uniqueness_of(:attribute) 感到有些困惑。测试通过。这
我使用带有 shoulda-matcher 的 rspec-rails 来测试我的模型。这是代码: user_ticket.rb class UserTicket < ActiveRecord::Ba
使用 shoulda-matchers 的正确格式是什么?和 RSpec 的新 expect syntax ? 最佳答案 虽然人们当然可以将 shoulda-matchers 与新的期望语法一起使用,
这是我的: context "Create ingredient from string" do context "1 cups butter" do setup
用较小的代码示例再次问这个问题: # this is a dummy shoulda macro that creates a context def self.macro_context
我对模型的属性进行了以下验证: validates :on_ride_photo, presence: true, inclusion: { in: [true, false] } 然后我有以
我在类(class)中遇到以下属性问题。我也有一个在数据库级别强制执行的日期属性,存在为真: 验证 :date, presence: true 除此之外,我需要为以下两个属性强制组合唯一性 valid
我正在尝试让整个设置在我的 Mac 上与 Autotest/Growl/Shoulda 一起工作,以测试我正在为 Authlogic 开发的 gem。 .我过去经常使用 RSpec,但想切换到 Sho
我的 avatar_parts_spec.rb 中有一个 shoulda 匹配器,但我无法让它通过: 测试: require 'rails_helper' RSpec.describe AvatarP
我有一个模型,该模型在数据库级别具有唯一索引,并且模型验证检查范围为多列的唯一性。 # db level add_index :table1, %i[fk_belongs_to_id col1 col
在我的 device 模型中,我有 enum device_type: { ios: 1 , android: 2 } validates :device_type, presence: true,
我有一个自定义验证器(位于 app/validators/uri_validator.rb)用于: validates :link, uri: true 如何在我的规范中指定它? 理想情况下,我希望进
我有以下 Rspec 测试: describe Productlimit do before(:each) do @productlimit = Factory.create(:produ
我是一名优秀的程序员,十分优秀!