2

私のアプリケーションは絶対URLを含む電子メールを送信します。

config / environment/development.rbにホストを設定しました

config.action_mailer.default_url_options = { :host => 'localhost:3000' }

次に、Eメールに有効なURLが含まれているかどうかをテストします。正規表現を使用して、電子メールから完全なURLを取り出し、カピバラ関数を使用してこのアドレスにアクセスしたいと思います。

mail = ActionMailer::Base.deliveries.last
address = mail.body.to_s[%r{http.+/edit}]
visit address;

しかし、config / environment/test.rbでどのホストを設定する必要があるのか​​わかりません

localhost:3000を設定すると、コマンドで起動したローカルサーバーに接続しようとしますrails server

この問題を解決するためのアイデアはありますか?

4

4 に答える 4

4

私のために働いたもの:

Capybara.server_port = 3005

( https://github.com/vangberg/capybara/commit/5784f03d6aa87e63e759abda794a43738e4f320fを参照)

config.action_mailer.default_url_options = { :host => 'localhost:3005' }
于 2011-11-04T16:11:45.497 に答える
2

Capybaraポートのハードコーディングがオプションではない場合(並列仕様など)にこれを機能させるには、これをspec_helper.rbに配置します。

 YourApp::Application.config.action_mailer.default_url_options[:host] = "localhost:#{Capybara.server_port}"
于 2013-03-19T04:58:12.320 に答える
0

URL にアクセスする代わりに、RegEx に対して検証するだけでなく、有効であり、正しくエンコードされ、正しいコントローラーを指していることを確認してください。

おそらく、実際にサーバーと対話したくないでしょう。本番サーバーを使用しない場合は、localhost:3000 がグー オプションです。

于 2011-07-21T16:10:40.650 に答える
0

ねえ、これはあなたを助けるかもしれない恐ろしいコードスニペットです. 私はemail_specを使用して、スペックとキュウリのシナリオでの電子メールの操作を簡素化します。タスクを簡素化するためのヘルパーが既にいくつかあります。私のアプリケーションでは、もう少し複雑な状況にあるため、独自のパーサーを作成する必要がありました。ここにコードがあります。楽しみ:)

于 2011-07-23T14:02:44.523 に答える