mam klasy użytkownika z wiadomości e-mail, który jest wyjątkowy, ale scoped najemcy:Testowanie wyjątkowość w zakresie w projekcie Rails za pomocą shoulda (ale nie rspec)
class User < ActiveRecord::Base
validates :email, :uniqueness => {:scope => :tenant_id, :allow_blank => true}
#...
end
próbuję go przetestować z:
class UserTest < ActiveSupport::TestCase
context "a user" do
setup { @user = create :user }
subject { @user }
should validate_uniqueness_of(:email).scoped_to(:tenant_id)
end
end
ale test nie powiedzie się z tej wiadomości:
Oczekiwane błędy włączenia „jest już zajęta”, gdy e-mail jest ustawiony na „[email protected] xample.com ", dostał błędy: [" email został już zajęty (\ "[email protected] \") "," first_name nie może być puste (zero) "," last_name nie może być puste (zero) "] (z inną wartością dzierżawcy)
co budzi wiele pytań. Dlaczego komunikat o błędzie jest niezgodny? Wygląda na to, że rzeczywisty adres e-mail jest zawarty w komunikacie o błędzie, ale dlaczego jest uwzględniony? Kiedy wygenerowania błędu z UI to nie wydaje się być zawarte:
Ponadto, na końcu mówi, że próbuje go z innym lokatorem, który, jeśli to prawda, to powinnam nie generuje żadnego błędu (nie działa, gdy uruchomię samą aplikację), ale dlaczego spodziewa się błędu? Powinien oczekiwać błędu tylko wtedy, gdy jest to ten sam identyfikator najemcy.
To takie zagmatwane. Jakieś pomysły, co się dzieje i/lub jak to właściwie przetestować?