estoy leyendo a través de algún Rspec escrito por alguien que dejó la compañía. Me gustaría saber donde esta línea:¿Cuál es el beneficio de Class.new en este 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) } }
está probando esta clase:
class AxeMailer < AbstractController::Base
def self.controller_path
@controller_path ||= name.sub(/Mailer$/, '').underscore
end
Quiero saber la diferencia entre esto y let(:mailer_class) { AxeMailer }
.
Lo pregunto porque en la actualidad cuando corro la prueba, se quejan name
es nula. Pero si lo cambié, probará bien.
creo que este problema comenzó después de usar los carriles 3,2, y creo que se hereda de name
AbstractController :: Base.
Ésta es la misma en la consola (lo que significa que no es Rspec específica), lo que puedo hacer AxeMailer.name
sin error, pero si lo hago Class.new(AxeMailer)
no es el problema.
Mis preguntas son:
- ¿Hay una razón para usar
Class.new(AxeMailer)
sobreAxeMailer
- ¿Hay un problema si sólo cambiar esto?
- ¿Hay alguna manera de no cambiar la especificación y hacerla pasar?
¿Se puede publicar más del código de prueba además del método 'let'? Eso nos ayudaría a determinar por qué fue escrito de esta manera. –
acaba de agregar algo, ¿sería suficiente? – lulalala
para mí, no hay ninguna razón. – shingara