5

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

Delayed::Worker.delay_jobs = false

但即使将此设置为 true,它仍然会失败,尽管速度更慢。如果我删除 devise_async gem 和相关行,一切都会重新焕发生机。

谢谢,格雷姆

4

4 回答 4

3

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

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

于 2012-11-20T00:59:41.033 回答
2

您可以关闭黄瓜环境中的事务

看看如何使用:

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

于 2014-03-04T14:39:15.673 回答
1

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

使用此步骤

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

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

于 2012-11-16T17:12:33.303 回答
1

如果您将 devise-async 与 sidekiq 一起使用,正如这里的一些评论者所问的那样,解决方案是让测试内联运行工作人员:

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

https://github.com/mperham/sidekiq/wiki/Testing

于 2014-04-11T11:04:43.447 回答