2017-10-24 9 views
-1

私はMockingオブジェクトと偽のオブジェクトについて基本的な理解を持ち、Unitテストケースメソッドの偽データを渡します。しかし、私たちのユニットテストメソッドに独自の偽のデータを作成するのではなく、実際のデータリターンをリポジトリで使用することは可能でしょうか。偽のデータではなく実際のデータにMockingリポジトリを使用したユニットテストケース

私は、.Net MVC 5アプリケーションにNUnitを使用しています。サンプルコードの行に以下に示すよう:

mockType.Setup(x=>x.GetUserDetails().Returns(
    new UserDetail(){ id = 1 , name = "John"} 
); 

だから私は(我々は上記の例で行ったように)偽のデータを作成する代わりに、メソッドのGetUserDetailsから実際のデータリターンを返す必要があります。

上記の例のように、偽のUserDetailを作成するのではなく、DBテーブルからユーザーの詳細を取得する必要があります。あなたのアドバイスをして、もっと情報が必要な場合はお知らせください。

ありがとうございます。

+1

GetUserDetails()がデータベースからデータを返すようにしたい場合は、通常どおりにテストデータベースをセットアップするだけでいいですか? – dbraillon

+0

良いアイデアはありますが、元のデータベースに変更があるたびに、テストデータベースで同じ変更を行う必要があります。あなたが知っているだけで、我々は生産以外のすべての環境に問題なく実際のデータベースで遊ぶことができます。 –

+0

また、私は、偽のデータオブジェクトを作成する(既に書かれている)リポジトリメソッドからデータを取得する方法を知りたいと思います。私が意味をなさないかどうか私に教えてください。 –

答えて

0

アプリケーションUI - >データベース - > UIの完全な "パイプライン"をテストする場合、アプリケーションの他のレイヤーにアクセスするテストでは、「統合テスト」または「受け入れテスト」と呼ばれます。

具体的には、本番環境で使用されているのとまったく同じスキーマを持つ空のデータベースが必要です。テストケース

  • 実行し、テストのための

    • 挿入データ
    • アサートクリーンデータベース
    • 結果、実際のデータベースへのアクセス

    、テストが遅くなります、すべての試験後のデータ、クリーンなデータベースを挿入 - へ統合が遅くなるか、受け入れテストが問題ない。

    テスト用データベースと本番用データベースのスキーマを同期させて維持するには、選択したスクリプト/ロジスティクスを維持する必要があります。

  • +0

    これは良い説明でした。同じ模擬設定でもう一度やり直しても、私の模擬リポジトリに実際のデータを提供することは可能ですか?元の質問に示されているように。 –

    +0

    はい、可能です。単に 'GetUserDetails'の実際の実装を呼び出してください。可能な場合は、通信者接続文字列とその他の依存関係を持つ実際のサービスを構成する必要があります。 – Fabio

    +0

    ありがとうございました!私にいくつかの例を教えてもらえれば助かります。 –

    関連する問題