問題タブ [fakeiteasy]
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# - 単体テストでの部分的なモック/フェイク
FakeItEasy (または、かなり似ていると思われる他のモック オブジェクト) について質問があります。以下は私のpuesdocodeです:
ここで、クラスの単体テスト コードを作成する必要があります。baseMethod() で Checkservice() を実際にテストしているときに GetBoolean() をモックすることは可能ですか? そうでない場合、コードをどのように変更すればよいですか?
ありがとう、カイル
entity-framework - 単体テストの汎用リポジトリ
私は単体テストにかなり慣れていないので、アプリケーションの汎用リポジトリの単体テストに関していくつか問題があります。ASP.NET MVC アプリケーションに作業単位パターンを実装しました。私のクラスは次のようになります。
NUnit と FakeItEasy を使用して単体テストを作成しています。セットアップ関数で、偽の PosContext オブジェクトを使用して UnitIfWork オブジェクトを作成します。次に、コンテキストにいくつかの Shop オブジェクトを設定します。
GenericRepository の Find メソッドをテストすると、問題なく動作します。正しい Shop オブジェクトが返され、正常に動作していると断言できます。
しかし、Get メソッドがリポジトリからすべてのショップを返すことをテストしたい場合、フィルター パラメーターを指定しないと、空のリストが返されます。理由がわからない?
ShopController は次のようになります。
Get メソッドから空のリストが返される理由を理解するのを手伝ってもらえますか?
c# - デフォルト コンストラクターがある場合のデフォルト コンストラクター エラーなし
編集:SOで本番コードを公開します!誰も私の秘密を盗まないことを願っています!
Modbus プロトコルを使用して TCP 経由でデバイスと通信するための Controller クラスがあります。NModbus ライブラリを使用します。
コントローラー クラスが実装するインターフェイスは次のとおりです。
これがコントローラークラスです。
このクラスとそのインターフェイスを含むライブラリと同じソリューションの Tests プロジェクトで作成されたテストから、次のエラーが発生しません。ただし、ライブラリを使用する別のソリューションのプロジェクトでは、次のようになります。
これはテストです:
FakeItEasy がクラスにデフォルトのコンストラクターがあると認識しないのはなぜですか?
大量の投稿で申し訳ありませんが、コードを含めるように要求されました。
new Controller()
編集:行の前に追加すると、テストに合格しA.Fake<Controller>()
ます:
unit-testing - FakeItEasy DbSet / IQueryable- エンティティ フレームワーク 6
FakeItEasy のこの投稿に似た例を誰かが持っているかどうか疑問に思っていました(元の投稿はこちらです。正しいセットアップを見つけようとしましたが、正しく設定できませんでした。オンラインで例を見つけることができませんでした。教え始めています。自分で単体テストを行い、FakeItEasy を使用することにしました.これまでの私のプロジェクトはすべてエンティティ フレームワークを使用し、Repository/UOW パターンは使用していません.これは、DbSet と DbContext が私の小規模なアプリケーションには十分であると考えているためです. EFとユニットテストですが、私はまだこれを理解したいと思っています.私が得たエラーは
System.NotImplementedException: メンバー 'IQueryable.Provider' は型 'DbSet
1Proxy' which inherits from 'DbSet
1' に実装されていません。'DbSet`1' のテスト ダブルは、使用されるメソッドとプロパティの実装を提供する必要があります。
どの方向も非常に役立ちます。ありがとうございました。
c# - ASP.NET MVC FakeItEasy - 模擬セッションが単体テストで正しい値を返さない
次のようにして、FakeItEasy を使用して MVC コントローラーのセッション オブジェクトをモックしました。
また、コントローラー アクションでセッション オブジェクトにアクセスすると、正しい値が返されます。
この問題は、次のようなセッターを介して同じキーを使用してセッションが設定されているコントローラーで後で発生します。
そして、キーが使用されると、間違った値が返されます:
モックされたセッションはモックされた値を返さず、新しい値も返しませんが、代わりにキーを返します (WTF?!)。私は何を間違っていますか?セッターを使用すると、モックされたオブジェクトは実際にどうなりますか?
c# - プライベート ctor と static create メソッドおよび private id プロパティを使用してクラスをモックする
AutoFixture を使用して生活を簡素化しようとしています。
クラスをモックするにはどうすればよいですか
- 非パブリック コンストラクターと
- 非公開IDと
- 静的な「作成」メソッド?
例
Factory と SpecimenBuilder の組み合わせを使用してみました:
と
デモ C# ソリューションは、https://github.com/draptik/MockingStaticCreateで入手できます。
ご指摘ありがとうございます。
パトリック
c# - タイプを指定せずに FakeItEasy を使用した偽のジェネリック メソッド
とにかく、可能なすべてのタイプ(または指定されたサブタイプ)に対して、ジェネリックメソッド呼び出しを偽造できるのだろうか?
たとえば、この素晴らしいIBarインターフェイスがあるとします。
T が特定の型であることを指定せずに、 この IBar のFoo呼び出しへの依存関係を偽造できますか?
ありがとう!
c# - モック化されたリポジトリで .Single() メソッドの戻り値をモック化する際の問題
シナリオ:単体テストの方法を学んでいます。現在、nUnit と FakeItEasy を使用した mvc アクション メソッドのテストに取り組んでいます。存在しない ID が渡された場合にメソッドが例外をスローすることを確認するテストがあります。アクション メソッドは、何も見つからない場合に例外をスローする .Single() のリポジトリ ラッパー メソッドを呼び出します。これはいい。
私のテストでは、次のことを行います。
- FakeItEasy を使用して偽の IRepository を作成する
- テストデータの作成
- テスト データからデータを取得するように .Single() ラッパー メソッドを構成する
問題:これをテストする際に問題があります。問題は、無効な ID が渡されると、アクション メソッド自体ではなく、偽のリポジトリの構成コードで例外がスローされることです。その理由は明らかです。アクションメソッドが実行される前に構成コードが実行され、構成コードはテストデータで .Single() を呼び出します...これには(もちろん意図的に)無効なIDが含まれていません。そのため、その場で例外をスローし、アクション メソッドに到達することさえありません。私がよくわからないのは、これを回避する方法です。アクション メソッド内で例外をスローする必要があります。この難問を回避する方法で戻り値を構成する方法がわかりません。
コード:
コントローラ コード
テストコード
偽のリポジトリ コード