Я пытаюсь написать тест для проверки уникальности поля в модели RoR.
Я работаю над приложениями Ruby on Rails, которые я использую для отработки своих навыков в TDD.До сих пор я использовал Интернет в качестве своего ресурса.Я пишу тестирование на валидацию для модели. Я не буду использовать гемы 'musta', 'FactoryGirl' (и т. Д.).Я знаю, что использование этих драгоценных камней сэкономит мне много кода, но в конечном итоге я буду использовать эти драгоценные камни.Я хочу научиться писать тест rspec самостоятельно без гемов, чтобы помочь мне понять, как писать тестирование.До сих пор у меня все хорошо, пока не тестируется уникальность.
Как создать тест для проверки уникальности поля 'email' в модели 'User' без использования 'musta', 'FactoryGirl' (и т. Д.) драгоценные камни.Я знаю, что использование этих драгоценных камней сэкономит много кода, но в конечном итоге я буду использовать эти драгоценные камни.Я хочу научиться писать тест rspec самостоятельно без гемов, чтобы помочь мне понять, как писать тестирование.
Большинство «ответов» на эти вопросы в Stackoverflow (и в других местах в сети) включают использование этихвспомогательные камни.Но не найти ответа на этот вопрос без драгоценных камней.
Вот модель, User.rb
`` `
class User < ApplicationRecord
validate: :name, :email, presence: true
validates :name, length: { minimum: 2 }
validates :name, length: { maximum: 50 }
# validates_format_of :email, with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
validates :email, format: { with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, on: :create }
validates :email, uniqueness: true
end
And here is `user_spec.rb`.
require 'rails_helper'
RSpec.describe User, type: :model do
subject {
described_class.new(name: 'John', email: 'john@home.xyz')
}
describe 'Validation' do
it 'is valid with valid attributes' do
expect(subject).to be_valid
end
it 'is not valid without name' do
subject.name = nil
expect(subject).to_not be_valid
end
it 'is not valid without email' do
subject.email = nil
expect(subject).to_not be_valid
end
(...)
it 'is invalid if the email is not unique' do
expect(????????).to_not be_valid
end
end
end
` ``
как мне написать, чтобы проверить уникальность.Должен ли я использовать что-то другое, кроме предмета для проверки?Помните, я не хочу, чтобы в этот раз использовались гемы (Shoulda / FactoryGirl / etc).
Я занимался этим последние несколько дней, и не повезло.Любое решение?А где лучший учебник по rspec для Ruby on Rails?