5

Cucumber で自分に割り当てられたストーリーのリストがあり、そのうちの 1 つは「ユーザーは確認メールを受け取る必要があります」です。ユーザーがそれを受信することをテストすることはアプリケーションの能力を超えていると思いますが、電子メールが送信されたことをどのようにテストできますか?

4

5 に答える 5

7

このステップ定義を使用できます。

Then "the user should receive a confirmation email" do
  # this will get the first email, so we can check the email headers and body.
  email = ActionMailer::Base.deliveries.first
  email.from.should == "admin@example.com"
  email.to.should == @user.email
  email.body.should include("some key word or something....")
end

Rails 3.2でテスト済み

ソース

于 2013-04-02T00:50:22.150 に答える
0

last_responseユーザーがボタンをクリックするなど、何らかのアクションが発生した後に確認することをお勧めします。

または、何かを行った後にレコードを更新する場合は、updated_at属性をチェックして、変更されたかどうかを確認します。

于 2013-02-06T18:24:52.707 に答える
0

Dockyard/capybara-email gemを確認します。

feature 'Emailer' do
  background do
    # will clear the message queue
    clear_emails
    visit email_trigger_path
    # Will find an email sent to test@example.com
    # and set `current_email`
    open_email('test@example.com')
  end

  scenario 'following a link' do
    current_email.click_link 'your profile'
    expect(page).to have_content 'Profile page'
  end

  scenario 'testing for content' do
    expect(current_email).to have_content 'Hello Joe!'
  end

  scenario 'testing for a custom header' do
    expect(current_email.headers).to include 'header-key'
  end

  scenario 'testing for a custom header value' do
    expect(current_email.header('header-key')).to eq 'header_value'
  end

  scenario 'view the email body in your browser' do
    # the `launchy` gem is required
    current_email.save_and_open
  end
end
于 2015-01-27T08:37:43.217 に答える