質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Capybara

Capybaraは、 Rubyで開発されているWebアプリケーションテストフレームワークです。Webブラウザ不要でブラウザ上のユーザー操作及びJavaScriptの挙動を自動化することができます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

iframe

HTMLのタグ<iframe>です。<iframe>は、ドキュメント内に""inline frame""を作るHTML要素で、同じページでセパレートしているドキュメントが表示されるようにします。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

Q&A

解決済

1回答

2344閲覧

slimテンプレートでiframeにモンキーパッチを当てたい

nyaahara

総合スコア9

Capybara

Capybaraは、 Rubyで開発されているWebアプリケーションテストフレームワークです。Webブラウザ不要でブラウザ上のユーザー操作及びJavaScriptの挙動を自動化することができます。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

iframe

HTMLのタグ<iframe>です。<iframe>は、ドキュメント内に""inline frame""を作るHTML要素で、同じページでセパレートしているドキュメントが表示されるようにします。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Slim

SlimはPHPアプリケーションを開発するための軽量なマイクロフレームワークです。

0グッド

0クリップ

投稿2016/10/01 06:27

###前提・実現したいこと

Rails5でテンプレートエンジンにslimを利用しています。
capybaraでテストを実行するとiframeを実装している箇所で失敗するときや、しないときがあります。
理由はurlに実際には存在しないダミーURLを指定しているときにタイムアウトになるようです。

そこで、テスト時はiframeのレンダリングの挙動を変更するためのモンキーパッチを当てたいと考えていますが、やり方が分かりません。

お知恵を貸していただけないでしょうか。
よろしくお願いいたします。

###補足情報

  • 実行環境
Rails 5.0.0.1 rspec 3.5.3 capybara 2.9.1 slim 3.0.7 slim-rails 3.1.1
  • target.slim.html

slim

1iframe src=@url

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

レンダリングの挙動を変更するとは別のタグをレンダリングしておくとかでしょうか?
下記の様なコード(iframeをaタグに書き換える)がテスト時に走るようにしておくと、タイムアウトにはならないと思います。

ruby

1Slim::Parser.class_eval do 2 alias :old_parse_tag :parse_tag 3 4 def parse_tag(tag) 5 tag = 'a' if tag == 'iframe' 6 old_parse_tag tag 7 end 8end

投稿2016/10/23 11:35

cameluby

総合スコア891

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nyaahara

2016/10/23 13:34

ありがとうございます。 「別のタグをレンダリングする」という発想は無かったですし、Slim::Parser#parse_tagにおたどり着けておりませんでした。 rspec実行時に教えていただいたコードを実行したところ、意図した通りの結果になりました。 非常に助かりました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問