2011-01-24 9 views
1

キュウリに「特別な定数」を入れて解決したいいくつかの設定上の問題があります。たとえば、テキスト"__USER__"がステップで使用されている場所であればどこでもかまいません。これは、ユーザー権限などのテストができるように、アプリを実行している現在のユーザーに置き換えてください。マッチする前にキュウリのステップテキストを修正してください

BeforeStep do |step| 
    domain = get_domain() 
    username = get_username() 
    step.text.gsub("__USER__", "#{domain}/#{username}") 
end 

はしかし、BeforeStepはありません。

は、私がこれに向かって取るしようとしていた戦略は、このような何かをすることでした。 Before do |scenario| ... endを使用しようとしましたが、シナリオには何も使用できませんでした。私たちのコード中の "__USER__"のインスタンスをユーザー(そして "__CURRENT_DATE__"のインスタンスと現在の日付など)に置き換えるにはどうすればよいですか?

答えて

0

私は通常、キュウリを使ってユーザーをログに記録し、そこからテストを実行します。私はこのようなWhen I fill in "txt_user_name" with "fred"のようなものとは対照的に、When the user logs inとしてより宣言の手順を記述するためのケースだと思います

Given a user exists with email: "[email protected]", account_type: "customer" 
When I go to the homepage 
And I follow "Sign in" 
And I fill in "email" with "[email protected]" 
And I fill in "password" with "password" 
And I press "Sign in" 
0

:よう

何か。そのような場合には、あなたのステップの定義を書くことは簡単だろう:

When /^the user logs in$/ do 
    domain = get_domain() 
    username = get_username() 
    fill_in "txt_user_name", :with => "#{domain}/#{username}" 
end 

あなたも、あなたが必要とするユーザ名に「ユーザー」テキストをオンにする変換ステップ引数に持って来ることができるので、あなたがする必要はありません繰り返しの変更を行います

CAPTURE_USER = Transform /^(the user)$/ do |this_isnt_used| 
    domain = get_domain() 
    username = get_username() 
    "#{domain}/#{username}" 
end 

When /^(#{CAPTURE_USER }) logs in$/ do |user_name| 
    puts "Logging in as #{user_name}" 
end 

このステップGiven the user logs inにマッチし、パラメータとして正しいユーザー名を渡します。

また、あなたの質問を振り返ってみると、トランスフォームを使って、あなたがしようとしていたものを正確に達成し、__USER__のインスタンスを置き換えることができますが、そのオプションを自分で選択することはありませんシナリオの可読性が高すぎます。あなたの選択!