如何使用 email_spec gem 和 cucumber 测试 Devise 电子邮件的内容?
How to test content of Devise emails with email_spec gem and cucumber?
我正在学习如何使用 cucumber 和电子邮件规范测试电子邮件的生成和发送 gem。
我已经安装了 gem 并生成了 email_steps.rb 文件。
但是 ActionMailer::Base.deliveries 数组总是显示为空,因此我无法测试电子邮件。
我的场景是这样的:
Background:
Given I visit the User Registration page
Scenario: Happy Path - Seccessful Sign Up
And I fill in the User Registration form correctly
And I click Register
Then I am redirected to the Users index page
And I can see email confirmation notification
And "John89@example.com" should receive an email
When I open the email with subject "Confirmation instructions"
And I follow "Confirm my account" in the email
And I am redirected to the Sign In page
And I fill in the Sign In form correctly
And I click Log In
Then I am redirected to the Home page
And I can see "Signed in successfully" notification
它在
上失败了
And "John89@example.com" should receive an email with subject "Confirmation instructions"
我在开发环境中查到邮件是用开信刀gem发送的,但不知道为什么在测试环境中没有被
Then /^(?:I|they|"([^"]*?)") should receive (an|no|\d+) emails?$/ do |address, amount|
unread_emails_for(address).size.should == parse_email_count(amount)
end
来自电子邮件规范的步骤 gem。
是否缺少某些配置设置?
问题是我设置了
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
在开发环境但不在测试环境,这意味着在测试环境,尽管在开发环境.
中手动执行时看起来不错
这是主要问题,第二个小问题是我的电子邮件地址中有一个大写字母,在发送时被小写。这意味着当电子邮件规范 gem 查找电子邮件时找不到匹配项,因为它们不完全匹配(交付数组中的那个被小写了)。
一个很好的调试方法是在 cucumber 中设置调试页面的步骤定义,如下所示:
Then(/^show me the page$/) do
save_and_open_page
end
这让您可以在浏览器中查看当前页面,这让我可以看到错误消息并找出问题所在。
如果以后有人遇到同样的事情,我希望能有所帮助
我正在学习如何使用 cucumber 和电子邮件规范测试电子邮件的生成和发送 gem。
我已经安装了 gem 并生成了 email_steps.rb 文件。
但是 ActionMailer::Base.deliveries 数组总是显示为空,因此我无法测试电子邮件。
我的场景是这样的:
Background:
Given I visit the User Registration page
Scenario: Happy Path - Seccessful Sign Up
And I fill in the User Registration form correctly
And I click Register
Then I am redirected to the Users index page
And I can see email confirmation notification
And "John89@example.com" should receive an email
When I open the email with subject "Confirmation instructions"
And I follow "Confirm my account" in the email
And I am redirected to the Sign In page
And I fill in the Sign In form correctly
And I click Log In
Then I am redirected to the Home page
And I can see "Signed in successfully" notification
它在
上失败了And "John89@example.com" should receive an email with subject "Confirmation instructions"
我在开发环境中查到邮件是用开信刀gem发送的,但不知道为什么在测试环境中没有被
Then /^(?:I|they|"([^"]*?)") should receive (an|no|\d+) emails?$/ do |address, amount|
unread_emails_for(address).size.should == parse_email_count(amount)
end
来自电子邮件规范的步骤 gem。
是否缺少某些配置设置?
问题是我设置了
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
在开发环境但不在测试环境,这意味着在测试环境,尽管在开发环境.
中手动执行时看起来不错这是主要问题,第二个小问题是我的电子邮件地址中有一个大写字母,在发送时被小写。这意味着当电子邮件规范 gem 查找电子邮件时找不到匹配项,因为它们不完全匹配(交付数组中的那个被小写了)。
一个很好的调试方法是在 cucumber 中设置调试页面的步骤定义,如下所示:
Then(/^show me the page$/) do
save_and_open_page
end
这让您可以在浏览器中查看当前页面,这让我可以看到错误消息并找出问题所在。
如果以后有人遇到同样的事情,我希望能有所帮助