テストのためにデータベースを調整すると、作業が速くなる可能性があります。 Ofc。これは使用しているDBのタイプに依存します... db統合テストでは、トランザクションを簡単にロールバックできます。他の統合テストでは、データアクセスレイヤを単純に模擬することができます。あなたは選択の余地を持っていませんが、実際のデータベースを使用してシステムをテストする機能テストでは
...
は、私は現在、備品を行うことで多くのことを助けることができるイベントソーシングを試しています。この手法の最短記述:DDDが必要(CQRSも推奨)、ドメインストレージをイベントストレージに保存した後、イベントストレージから関連イベントを取得して現在の状態を構築し、シーケンス。このイベントストレージの上には、サービスのコンポーネントの現在の状態のみを含むさまざまなキャッシュデータベースを構築することができます。これ以上のことは...同期プロセスは、投影と呼ばれるクラスによって行われ、自動的に同期または非同期イベントを保存してだから、治具を作るために、あなただけのドメインのイベントを格納する必要が...
たとえばあなたは非常に単純なREST APIによって、このような何かを書くことができます:
治具作り:
event.storage.clear();
every.cache.clear();
var credentials = {
name: "infje",
password: "oéö9péüöáé9oilusw"
};
var resourceId = "swegretz34ze4wed";
var userDataSet = [
{
id: 1,
type: "UserCreate",
resource: resourceId,
identificationFactors: credentials,
nick: "inf3rno",
birthDate: "1333.03.03.",
hobbies: ["wall climbing"]
},
{
id: 2,
type: "UserUpdate",
resource: resourceId,
hobbies: ["base jumping", "knitting"]
}
];
event.storage.persistAll(userDataSet);
auth.cache.sync(event.storage); //a relational database with the user credentials
users.cache.sync(event.storage); //a nosql document database with the user profile
を
機能テスト:
var response = http.get("https://my.test.api/users", credentials);
assert(response).toEqual({
size: 1,
items: [
{
id: resourceId,
nick: "inf3rno",
hobbies: ["base jumping", "knitting"],
birthDate: "1333.03.03."
}
]
});
注:これはコンセプトコードの単なる証拠なので、パスワードの暗号化、RESTのハイパーメディアの制約、電話交換などの詳細情報投影クラスのCコールなどは現在関連していません。
c。これは元のアプローチよりも遅いが、まだ遅いイベントですが、実際のデータベースをテストしたい場合はその部分を変更することはできません。イベントを使用してテストフィクスチャの作成、データのマイグレーション、キャッシュデータベースの構造の変更新しいリリースなど...それは間違いなく試してみる価値があります。
私はすでにHudson、Maven、JWebUnitなどのツールを使用しています。エンドツーエンドのテストは、メインプロジェクトが成功するたびに実行されます。しかし、面白いのは、別のプロセスでテストを実行しているときに、実際にデータベースにホストされ、Webアプリケーションにキャッシュされている場合に、環境を設定して解除する方法です。 –