Пытаетесь проверить отправку электронной почты в rSpec, но ActionMailer :: Base.deliveries.empty?правда - PullRequest
2 голосов
/ 01 ноября 2011

Понятия не имею, почему это не работает. После нескольких часов попыток выяснить это, я написал небольшой тест, чтобы проверить, был ли ActionMailer :: Base.deliveries пустым и был ли он.

Когда я тестирую свою форму сброса, она работает, и почта отправляется, но когда я запускаю тест, кажется, что она ничего не сохраняет в массиве.

require 'spec_helper'

describe "Passwords" do
  describe "reset password" do
    it "emails user when requesting password reset" do

        visit login_path
        click_link "Forgot Password?"
        response.should render_template "passwords/new"
        response.should have_selector :h1, :content => "Reset Password"
        fill_in "password_reset[email]", :with => "foobar@gmail.com"

        click_button "Reset Password"

        response.should render_template "users/new"
        response.should have_selector :div, :id => "flash_notice", :content => "Email sent with password reset instructions."


         ActionMailer::Base.deliveries.empty?.should be_true
 #       mail = ActionMailer::Base.deliveries.last


    end
  end
end

Ответы [ 2 ]

2 голосов
/ 01 ноября 2011

Только что обнаружил отличный драгоценный камень для проверки писем с помощью rspec: https://github.com/bmabey/email-spec

Надеюсь, это поможет.

1 голос
/ 01 ноября 2011

Кажется, я всегда делаю глупости:

Поскольку я создал файл passwords_spec вручную и не использовал генератор rspec, я забыл добавить «require 'spec_helper'» вверху файла. То, что генератор сделал бы автоматически.

Последние несколько дней я выяснял свои глупые ошибки. Забавно, как все это произошло, когда я ленился и решил сначала создать свое приложение, а потом протестировать. Ну, я учился на своей ошибке. Проверь сначала!

...