Ruby on RailsにおけるCucumberの活用を解説します。
未完成のシナリオには、@wip(work in progress)タグを付けてください。これらのシナリオは考慮されず、テストの失敗としてマークされることはありません。未完成のシナリオが完成し、機能テストに合格したら、そのシナリオをテストスイートに追加するために、@wip タグを削除しなければなりません。
デフォルトの設定ファイルで、@javascriptでマークされたシナリオを除外するように設定してください。これらはテストのためにブラウザを使用するので、一般的にシナリオの実行速度を上げるために無効にすることをお勧めします。
javascriptでマークされたシナリオのために、別のプロファイルを設定します。
設定ファイルは、cucumber.ymlファイルで設定することができます。
# Profile definitions.
profile_name: --tags @tag_name
コマンドでプロファイルを実行します。
cucumber -p profile_name
を使用する場合 ファブリケーション を使用してダミーデータ (フィクスチャ) を置き換えると、定義済みの 製作手順 .
古いweb_steps.rbのステップ定義は使わないでください! 最新版のCucumberではウェブステップが削除され、それを使うとシナリオが冗長になり、アプリケーションのドメインが正しく反映されなくなりました。
要素の視覚的なテキストをチェックするとき、idの代わりに要素のテキストをチェックします。
同じ種類のオブジェクトに対して、異なる機能的特徴を作成する。
# Difference
Feature: Articles
# ... Feature: Articles ...
# Good
Feature: Article Editing
# ... Features ...
Feature: Article Publishing
# ... Features ...
Feature: Article Search
# ... Feature implementation ...
各機能は主に3つの要素で構成されています。
タイトル
Narrative - この機能が何であるかについての短い説明です。
受入基準 - 別々のステップで構成されるそれぞれのシナリオのセット。
最も一般的な形式は、Connextra形式と呼ばれるものです。
In order to [benefit] ...
A [stakeholder]...
Wants to [feature] ...
これは最も一般的な形式ですが、必須ではありません。物語は、機能的な複雑さに依存するものであれば、どのようなテキストでもかまいません。
シナリオをDRYに保つために、シナリオの概要を自由に使ってください。
Scenario Outline: User cannot register with invalid e-mail
When I try to register with an email "<email>"
Then I should see the error message "<error>"
Examples:
|email |error |
|The e-mail is required|
|invalid email |is not a valid e-mail |
シナリオのステップは、step_definitions ディレクトリにある .rb ファイルに配置されます。ステップファイルの命名規則は、[description]_steps.rb です。ステップは、異なる基準に基づいて、異なるファイルに配置されます。ステップファイルは、1つの関数(home_page_steps.rb)に対して1つだけ存在する可能性があります。
. また、各オブジェクト固有の機能のためのステップファイル(article_steps.rb)が存在する場合もあります。
ステップパラメータは複数行で使用し、繰り返しを避ける
シナリオ
User profile
Given I am logged in as a user "John Doe" with an e-mail "[email protected]"
When I go to my profile
Then I should see the following information:
|First name|John
|Last name |Doe
|E-mail |[email protected]|
|Doe |E-mail || Step:
Then /^I should see the following information:$/ do |table|
table.raw.each do |field, value|
find_field(field).value.should =~ /#{value}/
end
end
複合ステップでシナリオをDRYに保つ
# ...
技術ニュース」カテゴリのニュースを購読したいのですが、どうすればよいですか?
# ...
# Steps:
カテゴリ "([^"]*)"$/ のニュースを購読する場合|category|を実行します。
ステップ %Q{
ニュースカテゴリーのページを表示すると
そして、カテゴリ#{category}を選択します。
そして、ボタン "このカテゴリを購読する"をクリックします。
そして、購読を確認します。
終了
カピバラでは、常にshould_notを使ったポジティブなケースではなく、ネガティブなマッチを使用するようにしましょう。より詳しい説明はCapybaraのRead Meファイルを参照してください。
関連
-
redisクラスタ構築のチュートリアルと発生した問題
-
bundlerを使ったRuby環境のインストールと複数バージョンのgemの管理
-
UbuntuでRuby on RailsフレームワークとRubyMine IDEを設定する
-
Rubyのオブジェクト指向プログラミングでクラスとメソッドの基本を学ぶ
-
RubyでXMLデータ処理ライブラリREXMLを使うための手引き
-
Rubyのデザインパターン。アダプタパターン実践ガイド
-
Ruby+Watirの自動テスト環境とWindowsでのデータ読み込みについて
-
Rubyのインストールと操作
-
Ruby on RailsでPing ++プラットフォームでの決済を実現
-
Rubyでコレクションを書くためのガイド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
モンキーパッチのプログラミングスタイルとRubyでの利用について
-
Rubyのシングルトンメソッドとシングルトンクラス
-
RubyのブロックオブジェクトProcの詳細解説
-
Ruby on Railsの基礎 - 新規プロジェクト
-
Rubyのプライベートとプロテクトを簡単にご紹介します。
-
Rubyにおけるコメントの使い方と中国語のエンコーディングについて解説します。
-
Rubyの基本的な環境変数の設定と一般的なインタープリタコマンド
-
Rubyでパーセント記号とリテラル値を使用する例
-
Ruby on Railsのマイグレーションに関するいくつかの考慮点
-
Rubyプログラミングにおけるアサインメント関連操作