1

ページ下部の編集を確認

私の上司がサイトマップをアップしています。これは基本的にすべてのルートがリンクになっているだけで、クリックするボタンには「有効ですか?」と書かれています。または「無視」すると、有効とマークされるか、ページ上で無視されます。

彼は、手動で各リンクをクリックし、ページが 500 または 404 でないことをテストし、そうでない場合は有効とマークするように私に求めました。

これは基本的に、作業ルートのユーザー向けテストにすぎないため、私にはばかげているように思えます。

同時に、これらすべてのルーティング仕様を Rspec に書き出すこともできますが、彼は、これがフロントエンドで起こっていることを自分自身とユーザーのために何らかのドキュメントで示したいと考えているようです。

この退屈なクリックを回避する楽しい方法は、仕様を書きながらプログラミングを行うことだと考えていました。彼を喜ばせ、再利用できるアプリに実際の価値とテストを追加します。

仕様で、次のようなものを書く方法はありますか:

links = page.all('a.routing-links)
link.each do |link|
  link.click
  if page status != 404 || 500
    Link.find(id).update_attribute("verified", true)
  end 
end

それを仕様に入れてみましたが、 link.click が間違ったルートにヒットすると、テストが停止します(そのルートが壊れており、これはテストであるため、これは理にかなっています.

私が望むのは、そのエラーを取得して、それを使用してモデルの属性を更新できるようにすることです。

私はこれについて完全に間違っていますか?より良いアイデアやインスピレーションはありますか?

ありがとう

編集

これはスクリプトまたはレーキ タスクに任せた方がよいという投稿者の意見に同意します。

ページに移動し、すべてのリンクを見つけ、その status_code を記録し、モデルを見つけて更新するスクリプトを作成する方法について、少し迷っています。提案やヒントはありますか?モデルとコントローラーにアクセスできるように、アプリケーション内で実行するのが理想的です。

ありがとう

4

1 に答える 1

1

個人的には、実際には何も失敗することを期待していないので、これを仕様に入れません。

代わりに、簡単なスクリプトを作成するか、説明したようにリンクを実行するタスクをレーキします。

そうは言っても、この記事: http://agileleague.com/2012/12/rails-3-2-custom-error-pages-the-exceptions_app-and-testing-with-capybara/は、通常の失敗を回避する方法を詳しく説明していますこれらの状況では、すなわち:

あなたのconfig/environments/test.rb

config.consider_all_requests_local = false
config.action_dispatch.show_exceptions = true

これはすべてのテストに影響しますが、これはおそらくあなたが望むものではありません。

また、これをテストするときにおそらくすぐに理解できる小さなこと-リンクをクリックした後にリストページに再度アクセスする必要があるか、リンクのクリックに頼る必要がある場合は、代わりに href にアクセスできます。少し速く。

links = page.all('a.routing-links')
link.each do |link|
  visit link[:href]
  if page.status != 404 || 500
    Link.find(id).update_attribute("verified", true)
  end 
end

私はそれをテストしていないので、そのように機能するかどうかはわかりませんが、アイデアを得ることができるはずです.

于 2013-01-24T08:46:54.157 に答える