Dieses Mal werde ich das Verfahren zur Einführung von Rspec beim Schreiben des Testcodes anstelle eines Memorandums aufschreiben.
Führen Sie 3 Arten von Edelsteinen ein, die im Test verwendet werden.
Beschreiben Sie im Prozess von group: development ,: test do ~ end
.
Gemfile
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'rspec-rails
gem 'factory_bot_rails'
gem 'faker'
end
Führen Sie nach dem Schreiben die Bundle-Installation durch und starten Sie den lokalen Server neu.
Terminal
% rails g rspec:install
.rspec
--require spec_helper
--format documentation # =>Nachtrag
Legen Sie fest, ob die Testfehlermeldung auf Englisch angezeigt werden soll.
RSpec.configure do |config|
Oben hinzugefügt.
spec/rails_helper.rb
#Unterlassung
I18n.locale = "en"
RSpec.configure do |config|
#Unterlassung
--Erstellen Sie ein Fabrikverzeichnis innerhalb des Spezifikationsverzeichnisses. --Und erstellen Sie eine Datei darin, um einen FactoryBot zum Testen zu generieren.
Modellname s.rb
. Dieses Mal möchte ich den Testcode des Benutzermodells schreiben, also werde ich "users.rb" verwenden.spec/factories/users.rb
FactoryBot.define do
factory :user do
name {Faker::Name}
email {Faker::Internet.free_email}
password = Faker::Internet.password(min_length: 6)
password {password}
password_confirmation {password}
end
end
Terminal (Konsole)
pry(main)> FactoryBot.create(:user)
spring stop
, um Spring zu stoppen.
#Verlassen Sie die Konsole mit exit
% spring stop
Terminal
% rails g rspec:model user
Ich werde Testcode immer mehr so schreiben.
spec/models/user_spec.rb
require 'rails_helper'
RSpec.describe User, type: :model do
pending "add some examples to (or delete) #{__FILE__}"# =>Die ursprüngliche Beschreibung wird gelöscht
describe 'Neue Benutzerregistrierung' do
before do
@user = FactoryBot.build(:user)
end
it "name, email, password, password_Wenn alle Bestätigungen eingegeben wurden, werden diese gespeichert" do
expect(@user).to be_valid
end
end
end
Führen Sie den folgenden Code aus.
Terminal
% bundle exec rspec spec/models/user_spec.rb
https://rubydoc.info/gems/faker/1.3.0/frames http://railscasts.com/episodes/126-populating-a-database https://github.com/takeyuweb/trygems/blob/master/try-faker/faker.md
Faker::Japanese https://github.com/tily/ruby-faker-japanese
Recommended Posts