基本的にファイルからx行を読み取り、データベースでそれを見つけようとし、ファイル内の情報の一部を取得して、データベース内の行の情報を更新するプログラムを作成する必要があります。
他のすべてが失敗した場合は、db に新しい行として挿入します。
したがって、基本的には多くの挿入と更新が行われます。
多くのフィールドを更新しているので、各情報が正しい場所にあることを確認したいので、ユニットテストを試みています(つまり、メールアドレスがファーストネームなどで設定されていません)。
ただし、これがプログラムの方法であることがわかっているため、どうすればよいかわかりません
// get records from file
foreach record in file
{
db record = find if it is in db
if(record != null)
{
if(do another logic check)
{
// update record
}
else if(do another logic check)
{
// update record
}
else
{
// do some more logic
if(do another check)
{
// update record
}
}
}
else
{
// do some more logic checks and do inserts.
}
}
これは、おそらくいくつかのプライベートメソッド(更新レコード部分など)を含むvoidメソッドで見られます。これを単体テストするにはどうすればよいですか?最初のif(別のロジックチェックを行う)を単体テストし、送信したレコードがそれらの条件を満たしているとします。
ただし、これらはプライベート メソッドであるため、単体テストを行うことはできません。現在、メソッドが何百ものレコードを通過し、おそらくほとんどのものをエラー ログ ファイルに出力するため、何も返されません。か何か。
お見せしたコードはサービス層にあります。moqでdbメソッド呼び出しをモックアウトします。
アプリケーションはコンソール アプリです。
ロジックを確認できるように、これを分割する方法について何か提案はありますか?