0

私のキュウリのシナリオは次のとおりです。

Scenario: test add user
Given I logged in with email
When I add user with name test1 in my test
Then I should see my user
#After remove user with name test1

いくつかのサンプルステップ定義は次のとおりです。

When /^add user with name (\w+) in my test$/ do |name|
    @test.add_user(name)
end

システムをクリーンに保つために、テストシナリオの終了後に追加したユーザーを削除したいと思います。アフターフックを使用してこれを達成できますか?ユーザー名をAfterフックに渡す方法が見つかりません。

4

1 に答える 1

2

情報をフックに具体的に渡す方法は実際にはありません。これは良いことです。シナリオでは、フックが実行されるかどうかを認識しないようにする必要があります。

ただし、フックはグローバル状態にアクセスできるため、作成された各ユーザーをグローバル配列に簡単に追加し、フックを使用してそれらのユーザーを削除できます。

# In step def
@test_users ||= []
@test_users << name
@test.add_user(name)

# In hook
@test_users.each { |u| @test.remove_user(u) }

database_cleaner gemは、テスト間またはテストスイート間でテストデータをクリアするために特別に設計されており、独自のクリーンアップコードを手動でロールすることなく、必要なものを提供できる場合があることを指摘しておく価値があります。

于 2012-05-08T10:30:17.960 に答える