'daki Class.new avantajı, şirketten ayrılan biri tarafından yazılan bazı Rspec üzerinden yazıyorum. Ben bu hat hakkında merak ediyorum:Bu 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) } }
Bu sınıf test ediyor:
class AxeMailer < AbstractController::Base
def self.controller_path
@controller_path ||= name.sub(/Mailer$/, '').underscore
end
bu ve let(:mailer_class) { AxeMailer }
arasındaki farkı bilmek istiyorum.
Bunu soruyorum çünkü şu anda testi çalıştırdığımda, name
'un nil olduğunu şikayet eder. Ama eğer değiştirseydim, iyi bir test olacak.
Bu sorunun Rails 3.2'yi kullandıktan sonra başladığını düşünüyorum ve bence name
, AbstractController :: Base'den devralındı.
Bu, konsoldaki (Rspec'e özgü değil) aynıdır, AxeMailer.name
hata olmadan yapabilirim, ancak Class.new(AxeMailer)
yaparsam sorun var demektir.
Sorularım şunlardır:
Class.new(AxeMailer)
Sadece bu değiştirirseniz bir problem var mıAxeMailer
üzerinde kullanmak için bir neden var mı?- Spesifikasyonu değiştirip geçmesini sağlamanın bir yolu var mı?
Daha fazla test kodunu 'let' yöntemine ek olarak gönderir misiniz? Bu, neden bu şekilde yazıldığını belirlememize yardımcı olur. –
sadece biraz eklediniz, bu yeterli olur mu? Bana – lulalala
, sebep yok. – shingara