ホームページ >バックエンド開発 >PHPチュートリアル >スナップショットテストとは何ですか?また、PHPで実行可能ですか?
PHPでのスナップショットテスト:テストへの革新的なアプローチ
マット・トラスク、ポール・M・ジョーンズ、ヤジド・ハニフィがレビューしたピア。 SitePointのピアレビュアーに貢献してくれたことに感謝します!
プログラミングのブレークスルーはまれで爽快です。 スナップショットテストは、私にとってそのような瞬間の1つを表しており、私のアプローチを根本的に変更します。 私の経歴はPHPである間、最初はJavaScriptで遭遇したこの手法は、PHP開発に大きな利点をもたらします。 スナップショットテストとは何か、PHPアプリケーションの開発をどのように強化するかを調べましょう。
自動化された比較:
スナップショットテストアプリケーション出力または状態をキャプチャし、保存された「スナップショット」と比較し、複雑なデータ構造またはUIの不一致を自動的に強調しています。懸念への対処
「HTMLとJavaScriptの混合」は、懸念の問題の分離ではなく、テクノロジーの分離
の分離ではありません。 重要なのは、レンダリングロジックが入力によって完全に定義されることです。<code class="language-javascript">function Tweet(props) { return ( <div classname="tweet"> <img src="%7Bprops.user.avatar%7D" alt="スナップショットテストとは何ですか?また、PHPで実行可能ですか?" > <div classname="text"> <div classname="handle">{props.user.handle}</div> <div classname="content">{props.content}</div> </div> </div> ); }</code>XHPなどのフレームワークを使用して、PHPで異常な構文を再現できます(互換性が必要ですが)。
props
従来のインターフェイステストの制限
セレンやBehatなどのメソッドは、ブラウザーインタラクションをシミュレートしてインターフェイスをテストします。ただし、これらは脆く、基礎となるロジックではなく正確なマークアップ構造に依存する可能性があります。
スナップショットテスト:優れたアプローチ
スナップショットテストは、React例のようなコンポーネントの決定論的性質を活用します。 コンポーネントのレンダリング動作を定義し、テストは特定の入力の出力をキャプチャします。 後続のテストは、このスナップショットと比較して比較されます
PHPUnitスナップショットアサーションを使用したPHP実装Tweet
次に、phpunitテスト内の提供されたアサーションを使用します:spatie/phpunit-snapshot-assertions
<code class="language-javascript">function Tweet(props) { return ( <div classname="tweet"> <img src="%7Bprops.user.avatar%7D" alt="スナップショットテストとは何ですか?また、PHPで実行可能ですか?" > <div classname="text"> <div classname="handle">{props.user.handle}</div> <div classname="content">{props.content}</div> </div> </div> ); }</code>これにより、
の出力がキャプチャされ、保存されたスナップショットと比較されます。 php
<code class="language-bash">composer require --dev spatie/phpunit-snapshot-assertions</code>のユースケース
$this->renderMyComponent()
小さなデータ駆動型テンプレートのテストに最適です。 モックデータ、テンプレートをレンダリングし、スナップショットに対して出力をアサートします。 イベントソーシング:
イベントストリームとプロジェクションのテストが大幅に容易になります。 一連のイベントと結果の投影状態を主張します。以上がスナップショットテストとは何ですか?また、PHPで実行可能ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。