据我所知,Rails测试环境在每个测试之前都会被拆除和重建...那么,如何测试需要用户登录且该用户无法创建而又不受Device的confirmable模块干扰的控制器呢?
Devise的推荐方法(如下)创建一个新用户,然后由Devise的confirmable
模块发送电子邮件。如何解决这个问题,使得我不必每次都“创建”用户……或者如果我确实要创建用户,如何获取一个可测试对象,而无需为每个规范“模拟”一封新邮件?
before(:each) do
@user = Factory.create(:user)
sign_in @user
end
我确定我正在忽略一些非常明显的东西,因为对于任何使用Devise和可确认性的人来说,这必须是一个非常普遍的规范...
ActionMailer::Base.delivery_method = :test
和自动生成的config.action_mailer.delivery_method = :test
有什么不同吗? - Meltemi@user.confirm!
。我会更新我的回答。 - Ryan Bigg@user.confirm!
是有帮助的,是朝着正确方向迈出的一步!但是,它仍然无法正常工作,因为我遇到了一个新的神秘错误:undefined method 'env' for nil:NilClass
。 - Meltemi@user.confirm
可以工作,但@user.confirm!
未定义NoMethodError: undefined method 'confirm!' for #<User:0x0000562eca83c2b0>
。你是指 confirm 吗? - lacostenycoder