Używam programisty i chcę móc pominąć wiadomość e-mail z potwierdzeniem, gdy jestem w trybie programowania. Ponieważ moja aplikacja nie może wysyłać wiadomości e-mail podczas pracy na moim komputerze lokalnym, otrzymam komunikat ostrzegawczy mówiący o konieczności potwierdzenia przed uzyskaniem dostępu do aplikacji.Pomiń e-mail z potwierdzeniem w rozwijaniu z pomocą:
Odpowiedz
spróbować otwieracz do listów gem Ryan Bates
https://github.com/ryanb/letter_opener
otworzy wiadomość e-mail w przeglądarce bez konieczności wysyłania go. Nie chcesz pomijać rzeczy, jeśli jesteś w fazie rozwoju, ponieważ rzeczy zostaną zapomniane/zapomniane.
Devise używa ActionMailer do wysyłania wiadomości e-mail. W trybie testowym ActionMailer nie powinien wysyłać żadnych wiadomości e-mail.
Zapoznaj się z this tutorial, aby uzyskać wyjaśnienie na temat środowisk ActionMailer i testowania.
W zależności od środowiska można zasadniczo wyłączyć dostawę, nie wpływając jednak na rzeczywiste testy. Trzeba tylko określić tę opcję w pliku environments/test.rb
.
Widzę, że w pliku testowym ma następujący kod: # Tell Action Mailer, aby nie dostarczać wiadomości e-mail do świata rzeczywistego. # Metoda: testowa metoda dostawy akumuluje wysłane wiadomości e-mail w tablicy # ActionMailer :: Base.deliveries. config.action_mailer.delivery_method =: test Czy powinienem po prostu skopiować ten fragment kodu do pliku config/environments/development.rb? – tomciopp
Hmm, nawet jeśli wyłączę dostawę, ale nie potrzebuję jeszcze sposobu na potwierdzenie modułu potwierdzającego , ponieważ nadal dostanę ten sam błąd, który muszę potwierdzić. – tomciopp
Jeśli chodzi o sposób na zaspokojenie go pod względem testów, po prostu sfałszowałem potwierdzenie za pomocą pozorowanego obiektu lub po prostu dostarczając mu kod potwierdzający z DB, ponieważ dostarczenie prawdziwej wiadomości e-mail nie jest ". t co jest ważne w teście. Co ważne, mechanizm potwierdzający działa, prawda? To znaczy, kiedy właściwy kod potwierdzający jest prezentowany za pomocą adresu URL potwierdzającego, chcesz wiedzieć, że jakaś flaga 'potwierdzona' jest odwrócona w DB? – jefflunt
W Railsach 3 można użyć "przechwytywacza" do przekierowania wiadomości e-mail dotyczących programowania, zgodnie z opisem w dokumencie Railscast 206.
Devise ma również metodę skip_confirmation!, do której można zadzwonić przed zapisaniem, aby uniknąć wysyłania wiadomości. Po prostu ustawia atrybut confirmed_at
, co powoduje pominięcie wysyłania wiadomości e-mail.
Lub możesz spróbować MailCatcher w swoim środowisku programistycznym.
Weź swój model do opracowania. Najczęściej jest to user.rb. I usuń lub skomentuj konfigurację comfirmable. To uniemożliwi proces potwierdzenia
takie proste
user=User.new
user.email="[email protected]"
user.password="yourPassword"
user.skip_confirmation!
user.save
Podobnie jak mały FYI, możesz umieścić wszystko w bloku: 'user = User.new {| u | u.email = '[email protected]'; u.password = 'yourPassword'; u.skip_confirmation! } .save'. Bloki są fajne! – wulftone
Jeśli chcesz wagi naprawdę lekki sposób to zrobić, patrzeć w terminalu po rejestracji - wyjście szyny pokazuje e-mail, który dostał wysłany, możesz skopiować i wkleić link potwierdzający, potwierdzić konto, a następnie kontynuować testowanie.
surowy, ale skuteczny.
lub [letter_opener_web] (https://github.com/fgrehm/letter_opener_web) dla przemieszczania –
Nie jestem pewien o pytającym, ale osobiście zapełniam dużą aplikację z dużą ilością danych. Właśnie otworzyłem ponad 600 zakładek w przeglądarce, ponieważ używam narzędzia do otwierania listów. Zgadzam się, że w większości przypadków nie chciałbyś pominąć, w tym przypadku ja def. trzeba pominąć. – Sean