2017-11-13 8 views
-1

ユニットテストについて質問があります。私は、開始時刻と終了時刻の2つの日付時刻パラメータを取るメソッドを持っています。このメソッドはデータベースを呼び出し、2つの日付時刻の間に一連のレコードを返します。私はこの論理を単体テストするように言われていますが、私はどのようにしてよいのか分かりません。私の最初の試みは、直接データベースを呼び出し、問題のテーブルをqryすることでした。次にメソッドを呼び出します。最後に、2つの結果を比較して、同じかどうかを確認します。
すべてのロジックがデータベースにあるため、このメソッドをテストするのは意味がありません。私はいくつかの基本的なオブジェクトをmoqすることができますが、偽のデータが返された場合、私がテストするのはすべてです。すなわち、xを渡し、yを返す.nullでない結果が合格する。私は間違ったトラックにいるかもしれないので、私はいくつかのアドバイスを使用してください。あなたはユニットテストしたいデータベース内のロジックを持っている場合はユニットストアドプロシージャを呼び出して結果を返すメソッドをテストする

+0

1オンスのコードなしで手助けするのは難しいです。ストアドプロシージャを呼び出すメソッドのコードを投稿してください。 – JuanR

+2

_「私はこの論理を単体テストするように言われました」_あなたが話した人に彼らが望むものを明確にするように頼んでみてはどうですか? – stuartd

答えて

1

は、その後、残念ながら、あなただけの本当に3つのオプションがあります。

  1. を(これはの結果を持っていることをサービスとユニットテストにロジックを抽出
  2. トランザクション内の単体テストのプロシージャを呼び出してロールバックします(データベースに依存し、単体テストの速度が遅くなるという欠点があります)
  3. SQL Serverには機能がありますshared classes inside its stored proceduresを使用する - あなたは単体でそのコードをテストすることができます。

私は以前writtenこのテーマにしましたので、あなたはそれが役に立つかもしれません。

+0

- #1 - 残念ながら、これはデータを返すために呼び出されているWCFサービスなので、この状況ではうまくいきませんが、通常これに同意します。 - #2 - これは私が現在やっていることですが、悪い習慣のために呼び出されました。 - #3 - 私たちはDBチームに手を差し伸べることはできません。 – user3333735

+0

WCFサービスには、他のサービスと同じ方法でロジックを含めることができます。 –

+0

このサービスを呼び出すフロントエンドWebサイトがあります。私は既存のWCFサービスでロジックを更新しています。すべてのデータは、サービス層を介してWebサイトから呼び出されます。サービスレイヤーはデータベースに直接アクセスします。 – user3333735

関連する問題