フィーチャファイルは継承できません。これまでにフィーチャーファイルを使ったプログラミングをしようとしてはいけません!
これを行う方法は、あなたの共通の背景が何を
- 名前です。
- は、あなたが新しい名前を見つける追加のセットアップを必要とするように、その名前
- を指し
- はあなたの機能で何かを含め、その名前を使用して、ヘルパーメソッドを実装する新しいメソッドを作成し、それらを呼び出すことにより、既存の方法を使用してい
名前付け部分は機能にとって重要です。残りはプログラミングであり、フィーチャーには存在しません。
我々は既にユーザーを登録したら、あなたのモジュールの一部を取得するので今、あなたは、複雑さの任意のレベルにこのパターンを適用することができます
Scenario: Users can see their previous orders
Given I am signed in
When I view my orders
Then I should see my orders
# steps
Given 'I am signed in' do
sign_in user: @i
end
# Helper methods
module SignInStepHelper
def sign_in(user:)
register(user)
...
end
end
World SignInStepHelper
にログインする機能を持っていると仮定すると、ログインの例を行うことができますスタックをプログラミング言語にして、複雑なレベルのプログラムを単一のメソッド呼び出しでプログラムすることができます。
秘密は、これをステップ定義よりも低いレベルで実行しているのです。これをネーミングと組み合わせれば、どんなレベルの複雑さにも対処できます。例えば
は
Scenario: Repeat order of monthly stationery
Given I am registered
And I have a monthly stationery order
When I repeat my monthly order
Then I should see my order in the checkout
And I should see my previous orders
# some steps
Given 'I have a monthly stationery order' do
create_monthly_order(
products: stationery_order,
user: @i
)
end
# implementation
module OrdersStepHelper
def create_monthly_order(products:, user:)
...
end
def stationery_products
[
...
end
end
が今、明らかに存在この作業を行うために必要な多くのコードがあるが、これはステップの下に押し下げられているので、彼らの毎月の文房具のリピートオーダーをやって登録顧客との契約をすることができますこれは単なる簡単なプログラミングです。したがって、stationery_order
、add_stock
などのメソッドが必要です。しかし、この動作を実装するまでにBDDを実行している場合は、他の多くの処理が行われ、利用可能になります。私は
features
step definitions
step helpers
application
このスタックダウンさらにある心の中で階層構造を持っているcukingとき
私はより良い私の経験がなるものを行うコードをプッシュすることができます。
それとも、これは私の願望に死を告げる鐘である: http://stackoverflow.com/questions/23832979/can-features-be-called-from-other-features-in-cucumber?rq=1 –
あなたが言及したのはネストされたステップです...あなたのフィーチャファイルに複数のステップの代わりに1つのステップを書くだけで、継承の部分は完成しません。人々の多くは、このアプローチを使用しないことを提案します。どのようにこれらの手順のタグフィルタとの前にグローバルフックを使用しますが、これらがシナリオの動作に不可欠なものであれば、コードの重要なステップを隠すことはお勧めできません。 – Grasshopper