問題タブ [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.
c# - Process.Start で Microsoft Fakes アセンブリを使用する方法
System.Diagnostics.Process.Start呼び出しをモックしたいので、システムアセンブリに Fakes アセンブリを追加しました。
問題は、StartがSystem.Diagnostics.Processの静的メソッドであるため、Start メソッドのデリゲートをホックできるシムを取得していないことです。
これを行う正しい方法は何ですか?
c# - フェイク単体テストの実行時に null 例外をスローする
偽物の単体テストは私にとって非常に新しいものです。今までやったことがなかったので実践してみることにしましたが、Shims.Context.Create() が null 例外をスローするため、偽の単体テストをデバッグできないという問題があります。テストを実行するとうまくいきましたが、デバッグするとnull例外がスローされました。修正方法は?
クラス: FileReader
FileReader クラスの Fakes 単体テスト:
tfs - TFS 2012 + VS 2013 + Microsoft Fakes コンパイルの問題 (TFSBuild 中のみ)
TFS 2012 (Update 3) と VS 2013 RC を使用しています。メイン プロジェクト/アセンブリと UnitTest プロジェクトの 2 つのプロジェクトを含む .sln ファイルがあります。単体テスト プロジェクトでは、Microsoft Fakes を利用しています。Visual Studio (私たちは Premium を使用しています) 内で、.sln をコンパイルしてテストを実行できます。ビルド エージェントでは、Visual Studio を使用して .sln をコンパイルおよびビルドし、テストを実行できます。しかし、ビルドをキューに入れると、Fakes アセンブリが見つからないため、UnitTest プロジェクトのビルドに失敗します。Visual Studio でビルドするときのように、動的に作成しているようには見えません。通常、VS では偽の dll が作成され、それが FakeAssemblies フォルダーに配置されます。ビルドが失敗した後、ログインして、FakeAssemblies ディレクトリがまったく作成されていないことを確認できます。
エラーは... C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (1605): この参照を解決できませんでした。アセンブリ "System.Web.Http.5.0.0.0.Fakes" が見つかりませんでした。アセンブリがディスク上に存在することを確認してください。コードでこの参照が必要な場合、コンパイル エラーが発生する可能性があります。
ビルドはデフォルトのテンプレートを使用しており、.sln (メイン アセンブリと単体テスト プロジェクトを含む) をビルドすることを選択しました。その .sln に UnitTest を含めるべきではありませんか? ビルド中に UnitTest をコンパイルする他の方法はありますか?
Visual Studio のように Fake アセンブリを動的に作成してビルドしない理由を知っている人はいますか?
ありがとう!!!
c# - Fakes を使用しているときに、テスト中のメソッド内のプライベート メソッドへの呼び出しを「モック アウト」する
私は Microsoft Fakes を使用して、非常に長いメソッドを分析し、それをリファクタリングして、よりよく理解しています。別のプライベート メソッドにリファクタリングするのに適していると思われる行をいくつか分離しました。私が取っているアプローチは、変更による影響を最小限に抑えるために、コードを手動で変更しないことです (すぐに使用できるリファクタリングのみを使用します)。問題は次のとおりです。問題の行を別のプライベート メソッドにリファクタリングしたら、それらの行に関連付けられているすべてのセットアップ コード (およびそれらをラップする新しいプライベート メソッド) を削除し、それを「モック アウト」したいと思います。デフォルトの定型回答を提供して電話をかけます。これはスタブ/シムのようなにおいがしますが、テスト対象のクラスについて話しているので、「モックアウト」メソッドを除いてそのコードを実行するクラスが必要です。Rhino Mocks では、PartialMock を使用してそのような呼び出しをスタブ化します (最初に仮想化した後!!!) が、この状況で Fakes を使用できますか? ありがとう。
c# - ADO.NET 固有のテスト データセット ID のモック
Microsoft Fakes Frameworkを使用して、レコードを挿入する方法をテストする単体テストに取り組んでいます。TransportControllerTest
、TransportManager
およびの 3 つのクラスがありDbController
ます。TransportControllerTest
ユニットテストクラスです。これTransportManager
はビジネス ロジック層の一部であり、DbController
3 つのメソッド (挿入、取得、および削除) があります。これらの最後のメソッドは、ADO.NETを使用してデータベースにアクセスします。
私の単体テストでは、挿入メソッドをテストしたいと思いTransportController
ます。このコントローラは と を2dbController
回呼び出します。最後の呼び出しは、最初の呼び出しで挿入に使用されたパラメーターを渡すことによって、最後に生成されたキーを提供します。では、次のように呼び出して、生成された ID にアクセスできます。dbController.insert()
dbController.get()
TransportController
上記の値をモックしたいので、次の式は true です。
私は次のことを試しました:
しかし、これはうまくいきません。テストで与えられた式を true にするにはどうすればよいですか?