ich ein Benutzermodell mit einer Reihe von BEFORE_SAVE Rückrufe haben - zum Beispiel eine, die führende und nachfolgende Leerzeichen Streifen:Rails Rspec/Factory-Bot aufruft nicht Modell BEFORE_SAVE Rückrufe
app/models/user.rb:
def strip_whitespace_in_user_names
self.first_name.strip!
self.first_name.gsub!(" ", "")
self.last_name.strip!
self.last_name.gsub!(" ", "")
end
ich habe ein Grundmodell spec, und ich würde überprüfen, dass dieser tatsächlich funktioniert. Zum Beispiel: "Nathan" sollte "Nathan" return
spec/models/user_spec.rb:
RSpec.describe User, type: :model do
let(:user) { build :poorly_defined_user }
it "has no leading white space" do
expect(user.first_name).not_to end_with(" ")
end
end
Hier ist die Fabrik Definition eines poorly_defined_user:
require 'faker'
password = Faker::Internet.password
# Factory to define a user
FactoryBot.define do
factory :poorly_defined_user, class: User do
first_name " asd "
last_name "AS DF "
handle "BLASDF824"
email Faker::Internet.email
password password
password_confirmation password
end
end
Allerdings, wenn ich Führen Sie die Tests, schlägt diese Erwartung fehl. Ich überprüfte Postbote (dies ist für eine API), und die Rückrufe werden korrekt ausgeführt, und die Attribute des Benutzers sind ordnungsgemäß festgelegt.
Jede Hilfe, warum dies passiert, oder, wie meine Tests restrukturieren, um zu reflektieren, wie Rspec/Factory Bot tatsächlich funktioniert.
Funktioniert perfekt, danke für Ihre Hilfe! –