質問

最近、私は私たちの製品でEmail2SMS機能で作業を始めました。私は、プロジェクトに参加したときに、このコンポーネントは、ユニットテストでゼロコードカバレッジを有していました。レガシーコードます。

私はそれに取り組んでに開始して以来、私はテストファーストのアプローチを使用していました。しかし、コードの品質は非常に低かったです。それとユニット・テストにより、テストの小さなチャンクを分割することは非常に困難だったので、私は統合テストを書くことにしました。

いくつかのメッセージ情報を受け入れるPHPスクリプトは、すべてがOKであればDB内のユーザーを検索し、いくつかの情報を保存し、あります。

$last_line = system('php emailtosms.php -file=unicode_message.txt ', $retval);

$this->assertStringExistsInLogFile('Email to SMS message was not sent');

は、それが悪いかではないですか?どのようにこの問題を解決するのでしょうか?

役に立ちましたか?

解決

あまりよくありません。

以上のテスト可能なクラスにオフに渡し、コマンドライン引数を処理する単純なラッパーとしてemailtosms.phpスクリプトを有し、そして低いレベルのテスト、。最終段階に応じて、ほぼすべての最後の送信が、操作を行うためにユニットテストを書くことができます(多分、実際にそれを送信し、最終的なステップを模擬し、ちょうどそれを変数に格納し、その後、あなたがそこに有効な何かを持って確認してください)。

最後の統合は、完全なクラスのエンドツーエンドを実行し、その出力を確認し、最終ログを見て - または少し高いレベルで、何をログに記録するに置かれることになる。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top