2

電話番号を取得し、ローカルで適切な表示形式に変換するPHPベースのライブラリがあります。(たとえば、アメリカの電話番号14083493300は1(408)349-4993になります)

このコードは、すべてのオフィスに物理サーバーを備えたオフィス電話システムの一部です。各サーバーには、ライブラリが使用するローカルカスタムを管理する一連の定数が定義されています。国コード、外線プレフィックス、ローカル拡張子の長さなどです。これらの定数は実行時に変更されないため、本番環境では問題は発生しません。

しかし、ライブラリは扱いにくいものであり、開発者以外の人にも編集を依頼しているので、BDDを紹介して、ライブラリの機能を文書化、リグレッションに注意できるようにします。

Behatを使用した最初のテストセットは魅力のように機能します。1つの領域にすべての定数を設定し、一連のテストを実行します。しかし、Behatが次の.featureファイルをロードすると、同じ定数に対して異なる値を持つ異なる領域、PHPバーフが記述されます。

Behatを.featureファイルごとに個別に手動で実行することもできますが、より良い回避策はありますか?次の機能ファイルをロードする前に、Behatに定数スペースをクリーンアップさせるものはありますか?

4

2 に答える 2

1

PHP で定数を再定義することはできません。すべての機能が 1 つの PHP プロセス内で実行されるため、実際には 1 回のパスで実行することはできません。

あなたが提案したように、解決策はそれらを別々に実行している可能性があります。すべての機能ファイルを見つけて実行するスクリプトを実装するのはかなり簡単です。

system()を使用して定数を別のプロセスとして定義するコードを実行し、 ob_start() + ob_get_contents()を使用してその出力をキャプチャし、ステップで検査することもできます。もちろん、コードの構築方法によって異なります。

于 2012-03-27T21:08:53.193 に答える
0

@AfterFeature フックを使用して、必要に応じて定数をリセットまたはクリーンアップできると思います。

それに関するドキュメントを確認してください: http://docs.behat.org/guides/3.hooks.html

于 2012-03-22T06:19:24.583 に答える