これは、PHPunit のドキュメントと、この期間中に学んだ知識を記録し、将来の参考のために補足して、学んだことを改善したいと考えています。
通常、会社のビジネスでコードをテストするために単一テストを使用します。これは、あなたの考えが十分に包括的ではないあらゆる小さな箇所を見つけるのに役立ちます。 (ダニエルは、最初に単体テストを書いてから実装コードを書くことができると言っていますが、今はまだ道のりは長いと感じています)
スタブ(スタブ):
「オブジェクトを、(オプションで)設定された戻り値を返すテストダブルに置き換える実用的な方法は、
スタブ化と呼ばれます。」 - これは、公式ドキュメントによるスタブ化の説明です
今振り返ってみると、何と言うか分かります。梨を一つ取ってください。====前提
テストしたいのはこのメソッドです: switchClothes($username) ---- 性別が 1 の場合はパンツを返し、0 の場合はスカートを返します。
リーリー
データベースにクエリを実行するために、Database クラス find() をカプセル化しました
====テストの作成を開始する
最初にテストする必要があるのは switchClothes クラスですが、このクラスではデータベース クラスをインスタンス化し、select メソッドを使用し、データベースにクエリを実行して、パンツが欲しいのかスカートが欲しいのかを調べる必要があります。では、このメソッドのロジックをテストしたいのですが、ユーザー名が存在しない場合は、データベースにアクセスしてデータを作成する必要がありますか?面倒だし十分ではない。データの更新を含むメソッドをテストする必要がある場合、本当にデータを変更する必要がありますか?
半券が豪華に届きました。母はもう私がデータベースを操作していることを心配する必要はありませんし、インターフェイスが理解できないことを心配する必要もありません。
このクラスはスタブできます。簡単に言えば、これはこのクラスと偽のデータベース クラスのシミュレーションだと思います。
上記と同様 A=switchClothes B=database class D=database C=stub class本来はAがBを呼び出し、Bがデータベースに問い合わせるべきです
ただし、C の存在は赤い線でマークされています。C はデータベースをチェックしません。C は、1 または 0 を返すように内部で指定できます。少なくとも A の観点からは、それは可能です。いずれにしても、0 または 1 が返されます。これは、C がシステム A を B および D から分離し、結合を軽減することを意味します。
それでは、必要なCの構築を始めることができます。
リーリー
Cです。
すべて