Как проверить электронную почту Pony в приложении Sinatra, используя rspec? - PullRequest
2 голосов
/ 14 декабря 2011

Я пробую email_spec , в котором говорится, что он поддерживает Pony, но я не уверен, как бы я провел тестирование электронной почты в приложении sinatra. Примеры в readme показывают использование с рельсами ActionMailer, но не в Pony.

Не стоит использовать email_spec, поэтому приветствуются любые другие идеи для тестирования писем с использованием rspec в sinatra =)

Ответы [ 2 ]

3 голосов
/ 18 декабря 2011

В итоге я посмотрел на файл спецификации пони и украл у него код, чтобы написать свои спецификации =)

Вот что у меня есть:

. / Спец / spec_helper.rb

def do_not_send_email
  Pony.stub!(:deliver)  # Hijack deliver method to not send email
end

RSpec.configure do |conf|
  conf.include Rack::Test::Methods
  conf.mock_with :rspec

  # ...

  conf.before(:each) do
    do_not_send_email
  end
end

. / Спецификация / интеграция / invite_user_spec.rb

require_relative '../spec_helper'

feature "Invite user" do
  scenario "should send an invitation email" do
    visit "/"
    click_link "start-btn"

    within_fieldset("Invite new user") do
      fill_in 'new_user_email', :with => 'franz@gmail.com'

      Pony.should_receive(:mail) { |params|
        params[:to].should == "franz@gmail.com"
        params[:subject].should include("You are invited to blah")

        params[:body].should include("You've been invited to blah")
        params[:body].should include("/#{@account_id}/new-user/register")
      }
      click_button 'new_user'
    end

    page.should have_content("Invitation email has been sent")
  end
end
2 голосов
/ 16 декабря 2011

Я раньше не использовал email_spec, но это выглядит довольно круто.

Вы можете увидеть, как я тестирую пони в файле спецификации, который может работать для вашего случая:

https://github.com/benprew/pony/blob/master/spec/pony_spec.rb

Кроме того, вы можете доставлять сообщения через: test, и он будет использовать тестовую рассылку, поставляемую с почтой:

См. "Использование почты с тестовыми или спецификационными библиотеками" в https://github.com/mikel/mail для примера проверки тестовых сообщений.

...