2016-09-07 15 views
0

私はcalabash-androidを使用してアプリケーションをテストしています。パラメータを使用してカスタムステップ内の既存のステップを呼び出します

私は自分自身のステップ作成:その後

Then /^There should be (\d+) customers$/ do |nr_of_customers| 
... 
end 

を、私は上記の既存のステップを呼び出す必要があります別のステップを、作成し、私はマクロを使用することができます知っているので、私はこれを試してみました:

Given /^I hosted (\d+) customers$/ do |nr_of_customers| 
#How to pass the nr_of_customers to the macro??? 
macro 'There should be nr_of_customers' 
... 
end 

しかし、他のステップ関数を呼び出すマクロにパラメータnr_of_customersを渡すにはどうすればよいですか?

答えて

3

ステップ内からステップをコールしないと、スパゲッティコードが混乱することになります。代わりに、ステップ定義からヘルパー・メソッドを抽出し、代わりにこれらをコールします。

Then /^There should be (\d+) customers$/ do |nr_of_customers| 
expect(customer_count).to be nr_of_customers 
end 

Given /^I hosted (\d+) customers$/ do |nr_of_customers| 
    # do some stuff to set up the customers 
    expect(customer_count).to be nr_of_customers 
    ... 

module StepHelpers 
    def customer_count 
    .... 

さらに、Givensにそのステートメントを埋め込む悪い習慣です。ギブンスので本当にあなた、あなたが顧客をホストする可能性が示されたシナリオを書いたときに作成したヘルパーをする必要があります何か

Given /^I hosted (\d+) customers$/ do |nr_of_customers| 
    nr_of_customers.times do 
    host_customer 
    end 

そしてhost_customerのようにする必要があります与えられた結果をテストしていない状態の設定についてです。

+0

'定義されていないローカル変数またはメソッド 'customer_count''があります。ステップ定義でヘルパー関数を正しく呼び出す方法はありますか? –

+0

あなたの世界にあなたのモジュールを追加してください(カラバッシュとアンドロイドにはそれがあると仮定します)。キュウリのルビーでは 'module MyStepHelper ... end World MyStepHelper'を実行します。これにより、手順が手順で使用可能になります。 – diabolist

関連する問題