Ho uno spec che ha iniziato a fallire qualche giorno fa. Sembra che il problema sia legato al fuso orario? Non vedo come possa essere colpa del mio plugin, ma forse mi sto perdendo qualcosa?
require 'rails_helper'
describe TopicDefaultTag::ActionsController do
before do
Jobs.run_immediately!
end
it 'can list' do
sign_in(Fabricate(:user))
get "/topic-default-tag/list.json"
expect(response.status).to eq(200)
end
end
Esecuzione di Rspec: plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb
Caricamento dei plugin durante l'esecuzione degli spec
Si è verificato un errore durante il caricamento di ./plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb.
Failure/Error: UserOption.create!(user_id: id)
NoMethodError:
metodo `timezone' non definito per #<UserOption:0x000055dd7af16ca8>
Forse intendevi: timeout
# ./app/models/user.rb:1343:in `create_user_option'
# (eval):19:in `block (2 levels) in run_file'
# ./spec/rails_helper.rb:79:in `<top (required)>'
# ./plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb:1:in `require'
# ./plugins/discourse-topic-default-tag/spec/requests/actions_controller_spec.rb:1:in `<top (required)>'
Nessun esempio trovato.
Completato in 0,00005 secondi (i file hanno impiegato 3,52 secondi per essere caricati)
0 esempi, 0 fallimenti, 1 errore verificatosi al di fuori degli esempi
Sembra che manchi la colonna del fuso orario nella tua tabella user_options. Hai eseguito le migrazioni di recente nel tuo database di test? RAILS_ENV=test bin/rake db:migrate
Dovresti ricevere un messaggio quando mancano le migrazioni
Ma questo funzionerà solo se stai utilizzando rails_helper. Sospetto che tu debba aggiungere require "rails_helper" all’inizio del tuo file spec. Questo potrebbe risolvere anche gli altri problemi che stai riscontrando.
Modifica: hmm… forse dovremmo aggiungere --require rails_helper al file .rspec in modo che non sia necessario aggiungerlo manualmente
Sembra proprio quel tipo di errore stupido che potrei commettere io! Purtroppo, però, ho require 'rails_helper'.
Forse il problema era eseguire ./bin/rake autospec invece di bundle exec rake autospec, ma continua a fallire su Travis e ora questo spec sembra fare un sacco di cose che non capisco per il mio piccolo spec, ma aspetterò e vedrò cosa succede.
C’è un sopra che crea quell’utente? (Non sono abbastanza bravo da ricordare come si chiama o esattamente come si fa. Ah, un fabbricatore, forse. Hai fabbricato quell’utente?
(O forse non l’ho visto, dato che sono sul telefono)
Sì, l’utente è stato creato correttamente. L’oggetto utente è istanziato. Il problema è nel metodo sign_in o legato all’ambiente? (Ma questo dovrebbe essere controllato)
Non sono sicuro del motivo per cui @env[CURRENT_USER_KEY] risulti nil dopo aver effettuato l’accesso di un utente all’interno dello spec?
Ho notato che durante l’esecuzione del test current_user viene chiamato più volte all’interno di un singolo test e, in un certo punto, questo attributo ha un valore, ma non in ogni chiamata e non quando è realmente necessario.
Ah, grazie per la verifica, David! Allora deve essere qualcosa di particolare nel mio ambiente di sviluppo!
No, non ci sono altri plugin installati (a parte quelli in bundle e data explorer), ma dato che funziona per te, sono ispirato a configurare una nuova istanza Docker pulita per lo sviluppo e vedere se riesco a farla funzionare con successo lì. Grazie!