我尝试在我的测试环境中调试我的user_mailer.rb。但我不知道为什么调试器会停在它想象的地方。
所以,我粗略的代码是:
user_mailer_spec.rb
describe UserMailer do
describe '#send_notification_letters' do
# bunch of code omitted here ...
it 'should record itself to the database'
expect { UserMailer.send_notification_letters(user) }.to change{SentMail.count}.by(1)
end
end
end
在user_mailer.rb
class UserMailer < ActionMailer::Base
def send_notification_letters(user)
byebug # should break here but doesnt,
# also tried binding.pry here, also doesnt work
# buggy code ...
# buggy code ...
# buggy code ...
SentMail.create(...) # never reached
mail(to:..., from:...)
end
end
问题是,为什么当我运行测试user_mail.rb
时,byebug / pry不会停留在rspec spec/mailer/user_mailer_spec.rb
?
为什么?
如何让它在那个断点停下来?
调试器中是否有错误?
答案 0 :(得分:2)
UserMailer.send_notification_letters(user)
实际上并未调用send_notification
操作,而是返回ActionMailer::MessageDelivery
对象。您需要调用传递才能命中方法,如下所示:
UserMailer.send_notification_letters(user).deliver_now
答案 1 :(得分:1)
我今天遇到了同样的情况。在挖掘之后,我发现我的问题是由thin
服务器的daemonize
配置引起的。
修改您的config/thin.yml
:
daemonize: false
或者你可以在你的Gemfile中注释掉thin
gem,改为使用默认的WEBrick
。
答案 2 :(得分:0)
我遇到了同样的问题,只是重新启动服务器。
就我的美洲豹而言,没有春天。