問題タブ [microsoft-fakes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - マイクロソフトは、統合テストのために SqlConnection をモックおよびモックアウトします
相互に対話するさまざまな Web サービスがあり、データベース呼び出しを行うこともあれば、メッセージ キューと対話することもありますが、実際にデータベースを呼び出すことなく、相互に対話するサービスをテストできるようにしたいと考えています。
システムの外側の端、つまりデータベースやメッセージ キューに実際にアクセスすることなく、統合テストを実行できる方法はありますか。
私たちの Web サービスとデータベースは、DI やテスト可能性を念頭に置いて作成されていないため、サービスに偽の実装を作成することは実際には選択肢ではありません。アセンブリの偽のバージョンを作成し、有望に見える Microsoft Mocks ライブラリを見てきました。
Microsoft の偽物を使用してこれを達成する方法はありますか? どうにかして、偽の SqlConnection を呼び出すサービスを取得し、データベース呼び出しをモックすることはできますか?
c# - Microsoft Fakes を使用して基本クラスの shim を取得するにはどうすればよいですか?
上記のコード サンプルで「名前」を設定するにはどうすればよいですか?
c# - Microsoft は、x86 および v4.5 ではなく x64 を偽造します
Microsoft Fakes テスト フレームワークを使用しています。変更できない「レガシー」コードのためにシム/モルアプローチを使用する必要があるため、これを回避する方法はあまりありません。ソースのないベンダーのコードであり、テストを考慮せずに書かれています。だから私は、TypeMock (高価)、Telerik の JustMock (高価)、または Microsoft の Fakes の 3 つの可能なフレームワークで立ち往生しています。VS Ultimate は既にあるので、偽物を選択します。ほとんどの人は、インターフェイスや依存性注入の使用をサポートするために何らかの方法でコードを書き直したり変更したりすることを提案する必要があると感じているため、前もってお伝えしますが、これはオプションではありません。
私が抱えている問題の 1 つは、偽造しようとしているライブラリが巨大であり、32 ビット (fakes.x86.exe) ではなく 64 ビット バージョンの fakes.exe を使用する必要があることです。 32 ビット アプリのメモリ制限。
2 つ目の問題は、v4.5 フレームワークを使用してフェイク ライブラリをコンパイルする必要があることです。文書化されていませんが、コマンドラインから可能です。その理由は、v4.5 で System.Collections.Generic に IReadOnly* インターフェイスが追加され、ライブラリがそれらを使用するためです。v4 でコンパイルすると、予想どおり、型が見つからないことを示すエラーがスローされます。
問題は、Visual Studio が常に x86 バージョンと v4.0 フレームワークを使用していて、それをオーバーライドする方法が見つからないことです。64ビットとv4.5フレームワークを使用する方法を知っている人はいますか? 私の現在の考えは、ビジュアルスタジオの組み込みのものを使用せず、コマンドラインを使用してファイルを手動で参照することです。次に、dll を更新するたびに、手動で再作成し、参照を更新します。このファイルは頻繁に更新されるわけではないため、更新される可能性があります。
フェイク ライブラリを手動で生成するために使用するコマンド ラインは次のとおりです (誰かがこれを便利だと思うかもしれません)。
help コマンドは、v2、v3.5、および v4 が tfv の可能なオプションであることを示しているだけですが、キックのために v4.5 を試しました。
アプリのアーキテクチャをCPUではなくx64に強制しようとしましたが、実行されたfakes.exeに変更はありません。テストのために .csproj ファイルを調べましたが、変更はありません。.csproj ファイルを調べたところ、fakes.exe が表示され、v4.5 に変更されたフレームワークを使用するように指示され、Visual Studio で開かれ、正常にコンパイルされました。正常にコンパイルされた、fakes コマンド ラインを使用しました。プロジェクトの .fakes ファイルには、コンパイラのバージョンを定義できる属性がありますが、v4.5 に設定しても機能しませんでした。Visual Studio の v4 から v4.5 へのバージョン変更により、アセンブリ参照も変更されたと想定しています。私の次の試みは、テンプレート プロジェクトが見つかったら、それを変更してみることです。
c# - Microsoft FakeFrameworkMVC4を使用したWebMatrix.WebDataの単体テスト
次のエラーメッセージが表示されない限り、AccountControllerからのログオフ、ログイン、登録アクションを新しいMicrosoft Fake Frameworkでテストすることはできません:System.Security.VerificationException:操作によってランタイムが不安定になる可能性があります。
単体テストは非常に簡単です。
また、これを見つけてください:http ://social.msdn.microsoft.com/Forums/en-US/vsunittest/thread/f84962ea-a9b2-4e0d-873b-e3cf8cfb37e2同じバグについて話しますが答えはありません。
ありがとう!
unit-testing - 多くの静的ヘルパーの下で DB リポジトリ クラスの単体テストを行う
私は部分的に完成したMVC Webプロジェクトと私の仕事に取り組み始めました - 単体テストでコードをカバーすることです。プロジェクトには、DB ストレージと、CRUD 操作を含む非静的リポジトリ クラスがあります。これらの CRUD 操作をテストするには、FakeRepository で実際の Repository クラスをモックする必要があるため、IRepository を作成し、IoC を使用して注入しました...
しかし、問題は、プロジェクトには、基本的な CRUD 操作を拡張する多くの静的メソッド (ヘルパー) を持つ多くの静的クラスもあり、アプリ内のすべてのコントローラーはこれらの静的ヘルパーと連携して内部的にリポジトリ クラスを作成することです...
コントローラーから IRepository を渡すようにすべての静的メソッドを変更しようとしましたが、他の静的ヘルパーなどに基づくヘルパーが多すぎます...うまくいきません! この混乱をすべて書き直す時間はありません...
したがって、これらすべてのヘルパーをテストするにはどうすればよいか、アドバイスが必要ですが、偽の IRepository インスタンスを使用しますか?
unit-testing - MS Fakes を使用してインデックス付きプロパティのスタブを作成する方法
部分的にこのように見えるインデクサー プロパティを持つ、モックする必要があるインターフェイスがあります。
上記の名前とインデックスの特定の値が指定した値を返すように、インターフェイスをモックアウトしたいと思います。Microsoft Fakes Framework でこれを実現するにはどうすればよいですか?
c# - ユニティ + インターセプト + フェイク = ビッグ ボール オブ ファイア
Unity を新しい Fakes フレームワーク (以前の pex & mol) で快適に動作させるのに問題があります。
Unity インターセプト ライブラリの偽物を作成しようとすると、デバッグ時に単体テストが正常に実行されましたが、
InvalidProgramException - 共通言語ランタイムが無効なプログラムを検出しました。
問題はなぜですか?デバッグとリリースで動作が異なるのはなぜですか? 単体テストはデバッグ時に合格しますが、代わりに実行することを選択すると上記の例外で中断します。
unit-testing - Microsoft Fakes ジェネレーターが PCL .dll の読み込みに失敗する
Windows ストア MVVM アプリケーションでのテストをサポートするために、モデルとビューモデルを、Windows ストアと .NET 4.5 のみを対象とする別の PCL に分割しました。モデル/ビューモデル PCL への参照を持つ .NET 4.5 単体テスト プロジェクトがあり、その .dll の偽のアセンブリを生成します。
プロジェクトをビルドしようとするまで、これはすべて正常に機能しますが、その時点で、単体テスト ライブラリは出力でこれを使用してビルドに失敗します。
コマンド ラインからプロジェクトに対して手動でフェイク ジェネレーターを実行すると、成功します。
ビルドでフェイクを生成するさまざまな問題を抱えている人もいますが、コマンドラインでも実行できますが、さまざまな失敗があります。ビルドで生成する代わりに偽の .dll を直接参照し、プロジェクトが変更されるたびに手動で生成するようにすることもできますが、これは最後の手段のように思えます。
c# - Microsoft Fakes は shim の抽象メソッドをサポートしていますか?
次の方法でクラスを設定しています。
私がやりたいことは、次のように ShimFooClass に WhatIWantToShim を設定することです。
RandomMethod を問題なく設定できます。
ただし、生成された ShimFooClass は、ShimFooClass の AllInstances プロパティに WhatIWantToShim プロパティを作成しないようです。
http://msdn.microsoft.com/en-us/library/hh549176.aspx#bkmk_shim_basicsを見ましたが、抽象メソッドについては何も表示されません。サポートされていない参照されている唯一のものは、ファイナライザーです。ここで何が起こっているのか、このシナリオがサポートされているかどうか知っている人はいますか?