如何让devise_async与Cucumber一起工作?

时间:2012-11-15 21:09:02

标签: ruby-on-rails devise cucumber

我按照README遵循了devise_async的说明,我正在滚动Devise 2.1.2和delayed_job。在我的黄瓜测试中,我不再收到确认电子邮件作为注册过程的一部分。作为测试的一部分,我应该做些什么吗?我已经通过在我的测试环境中设置以下内容来设置延迟作业以跳过测试的实际延迟。

Delayed::Worker.delay_jobs = false

但即使设置为真,它仍然会失败,尽管速度会更慢。如果我删除了devise_async gem和相关的行,那么一切都会恢复生机。

谢谢, 格雷姆

4 个答案:

答案 0 :(得分:3)

新版本的devise-async会在记录提交到数据库后触发电子邮件。使用RSpec,默认情况下每个测试都包含在一个事务中。黄瓜也这样做吗?在这种情况下,您需要关闭这些测试交易。

这是我用于RSpec的内容: http://www.denniskuczynski.com/2012/06/22/changing-individual-test-configuration-based-on-passed-in-options.html

答案 1 :(得分:2)

你可以关闭黄瓜环境中的交易

了解如何使用:

https://github.com/cucumber/cucumber/wiki/Browsers-and-Transactions

答案 2 :(得分:1)

您是否尝试过使用Delayed :: Worker.new.work_off方法? 不确定它适用于Devise异步,但它以前用于检查电子邮件。

使用此步骤

Given /^Jobs are being dispatched$/ do
  Delayed::Worker.new.work_off 
end

在测试电子邮件之前运行此步骤?

答案 3 :(得分:1)

如果您在sidekiq中使用devise-async,正如这里的一些评论者所问,解决方案是让测试以内联方式运行:

require 'sidekiq/testing'
Sidekiq::Testing.inline!

请参阅https://github.com/mperham/sidekiq/wiki/Testing