偉大な質問rip。それが価値あるものであれば、私はMXUnit(eclipseプラグインを作成しました)に貢献しています。このシナリオは、今年cfobjectiveでテストしやすいコード(http://mxunit.org/doc/zip/marc_esher_cfobjective_2009_designing_for_easy_testability.zip)で行ったプレゼンテーションにありました。
このシナリオでは、アップロードをテストしないことをお勧めします。我々のコードではないものをテストするために時間を費やすべきではないと私は信じています。私たちがバグやその他の奇妙なものを捕まえる可能性は、それが未テストのままにしておくことを正当化するのに十分低いです。私たちは "私たちの"コードをテストするべきだと考えています。
あなたのシナリオでは、1)アップロードと2)アップロード後の動作の2つの動作があります。私はアップロード後の動作をテストしたいと思います。
これで、ファイルのソースを気にしないようにユニットテストが解放されます。どのようにして実際にアップロードロジックが「ファイルとは何か」から切り離されていることに注目してください。論理。結論として言えば、これは少なくともアップロード後のものにこのポストアップロードロジックを再利用する可能性を(理論的に)作り出します。
これにより、単体テスト自体のsetUpのどこかに置かれたファイルに対してテストできるので、テストがずっと簡単になります。
<cfffunction name="uploadAndDoStuff">
から
<cffunction name="upload">
、その後
<cffunction name="handleUpload">
または "handleFile" または "doSomethingWithFile" または "processNetworkFile" またはいくつかの他の事にだからあなたのコンポーネントの変更。ユニットテストでは、upload()をテストしないで、アップロード後のハンドラをテストするだけです。例えば、私が仕事中にこれをやっていたら、「ファイルをアップロードしてファイルをウイルススキャンのためにキューに移動し、イメージやjpgの場合はサムネイルを作成し、データベースに追加するなど」としたら、私はCF1.0(または何でも)以来働いているので、 "アップロードファイル"はすでに動作していることを知っているので、私は孤立してテストしたいと思います。理にかなっている?
さらに、「アップロード」はコンポーネントから完全に離したままにしてください。CFMファイルに保存するのは間違いありません。なぜなら、(私が見る限りでは)それを汎用化しようとする点はあまりないからです。嘲笑に関係するメリットがあるかもしれませんが、それはまったく別の話題です。
参考にしていただきありがとうございます。これについてもう少し考えなければなりません。 – rip747