私は遊んでいたシーサイドアプリでテスト駆動開発を使用していましたが、私のすべてのデータは(データベースではなく)イメージにオブジェクトとして格納されています。Smalltalk Seasideでテストデータ用のテストフィクスチャまたは同等品をテストしますか?
ToDoTest>>setUp
savedTasks := Task tasklist.
Task deleteAllTasks.
savedProjects := ToDoProject projectlist.
ToDoProject deleteAllProjects.
savedPeople := Person peoplelist.
Person deleteAllPeople.
そして:
ToDoTest>>tearDown
Task tasklist: savedTasks.
ToDoProject projectlist: savedProjects.
Person peoplelist: savedPeople
私は私のテストを実行したときにだから私はこのように、それはテストデータをゴミ箱に移動される前に、実際のデータを離れて保存するように注意しなければならなかった
私のテストが失敗したときに問題が発生しますが、これはデバッガをポップアップさせてしまいますが、私は離れてしまいますが、tearDownが必ず呼び出されるわけではないので、私は実際のデータを失うことがあります。
私はデータをファイルに保存するので、大きな問題ではありませんが、滑らかで自動化されたものではありません。
とにかくこれを改善できますか?
興味深い。私は何らかの方法でデータを分割するというアイデアがここで助けになると思います。たとえば、私の単純なto-doアプリには現在ユーザーの概念がないので、これを追加して単体テスト用のテストユーザーを作成することができます。 –
それを行う方法はたくさんあります。データを簡単にローカライズしたい場合は、クラスサイドからインスタンスサイドに移動することです。 ToDoProjectがメインクラスの場合は、クラスサイドのメソッドをインスタンス側に移動します。あなたはToDoProject >>#taskList、ToDoProject >>#projectList、... ToDoProjectクラス>>#defaultがあなたの実際のデータでToDoProjectインスタンスを返すように、最初のステップでToDoProjectをシングルトンにすることができます。あなたの海辺のコンポーネントには、instVarの "プロジェクト"があります。次に、本当の使用のために "ToDoProject default"でコンポーネントを設定し、 "ToDoProject new"をテストするために、 –