Sto leggendo attraverso alcuni Rspec scritto da qualcuno che ha lasciato l'azienda. Mi chiedo su questa linea:Qual è il vantaggio di Class.new in questo Rspec
let(:mailer_class) { Class.new(AxeMailer) }
let(:mailer) { mailer_class.new }
describe '#check' do
before do
mailer_class.username 'username'
mailer.from '[email protected]'
mailer.subject 'subject'
end
subject { lambda { mailer.send(:check) } }
Si tratta di prove della classe:
class AxeMailer < AbstractController::Base
def self.controller_path
@controller_path ||= name.sub(/Mailer$/, '').underscore
end
voglio sapere la differenza tra questo e let(:mailer_class) { AxeMailer }
.
Chiedo questo perché attualmente quando eseguo il test, si lamenterà name
è nullo. Ma se lo avessi cambiato, funzionerebbe bene.
Penso che questo problema sia iniziato dopo l'utilizzo di Rails 3.2 e penso che name
sia ereditato da AbstractController :: Base.
Questo è lo stesso nella console (il che significa che non è specifico di Rspec), posso fare AxeMailer.name
senza errori, ma se faccio Class.new(AxeMailer)
c'è il problema.
Le mie domande sono:
- C'è una ragione per usare
Class.new(AxeMailer)
oltreAxeMailer
- C'è un problema se mi limito a cambiare questo?
- C'è un modo per non cambiare la specifica e farla passare?
Puoi inserire più del codice di prova oltre al metodo 'let'? Questo ci aiuterebbe a determinare il motivo per cui è stato scritto in questo modo. –
appena aggiunto, sarebbe sufficiente? – lulalala
per me, non ci sono ragioni. – shingara