問題タブ [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.

0 投票する
1 に答える
629 参照

mocking - 生成されたサービスモック:RhinoMocks以外はすべて失敗しますか?

このコードを参照してください:

DoSomethingこれは、NOインターフェースから継承する自動生成クラスの非仮想メソッド呼び出しであることに注意してください。したがって、一般的な知識によれば、それは機能しないはずです。しかし、そうです。

問題は、これを実行できる唯一の(非商用の)フレームワークであるということです。

  • Rhino.Mocksが機能し、検証も機能します
  • FakeItEasyは、デフォルトのコンストラクターが見つからないと言っています(おそらく間違った例外メッセージ):No default constructor was found on the type SomeNamespace.TicketStoreService
  • Moqは、正気で理解しやすいものを提供します。Invalid setup on a non-virtual (overridable in VB) member: service=> service.DoSomething
  • Nsubstituteはメッセージを出しますSystem.NotSupportedException: Cannot serialize member System.ComponentModel.Component.Site of type System.ComponentModel.ISite because it is an interface.

Moqを除いて、フレームワークで何が起こっているのか本当に不思議に思っています。「ファンシーな新しい」フレームワークも最初のパフォーマンスに影響を与えているようです。おそらく、Typeキャッシュを準備してシリアル化する一方で、RhinoMocksは、再帰なしで非常に「スリムな」モックを作成できます。私はRhinoMocksがあまり好きではなかったことを認めなければなりませんが、ここではそれが輝いています..残念ながら。

それで、それを新しい(非商用!)モックフレームワークで動作させる方法、またはRhino.Mocksから(実際に使用する6つのパラメーターのどれがどのように異なっているかを説明する)正しいエラーメッセージを取得する方法はありますか? ?そして、Rhino.Mocksがこれを達成できるのはなぜですか?明らかにすべてのモックフレームワークが、具体的なクラスが与えられた場合にのみ仮想メソッドで機能できると述べているのに?

* Extract&Overrideなどの代替アプローチやJustMock / TypeMock / Molesなどのランタイムプロキシモックフレームワークや新しいFakesフレームワークについて話して、議論を狂わせないでください。これらは知っていますが、このトピック以外の理由から、あまり理想的なソリューションではありません。

0 投票する
1 に答える
1597 参照

c# - FakeItEasy は部分モックのアイデアをサポートしていますか?

NSubstitute に関するこの質問と同様に、 FakeItEasyライブラリを使用して部分モックを実装できるかどうかを知りたいです。

FakeItEasy は、moq よりも全体的に優れた構文を持っているようです (前者が偽造されたクラスのコンストラクターにパラメーターを渡す際に厳密に型指定された方法と同様)。FakeItEasy への切り替えを考えていますが、部分的なモックのサポートがどうしても必要です。

0 投票する
1 に答える
157 参照

c# - 別のモックからプロパティとして返されたインターフェイスをモックする方法は?

次のインターフェースがあります。

IManufacturing を使用し、次のように GetSpecs() を呼び出すクラスがあります。

私は自分のモックを次のように設定します:

テストを実行すると、出力に「ジョブ API が呼び出されました」という文字列しか表示されません。そのため、GetSpecs() は嘲笑されず、実際に呼び出し元はスペックのリストを期待していたのに空の文字列を受け取ったためスローしました...

ここで犯人は何でしょうか?

ありがとう。

0 投票する
1 に答える
2311 参照

fakeiteasy - FakeItEasyで代理人を偽造する方法

デリゲートタイプを偽造しようとすると、System.InvalidCastExceptionが発生します

どのように私は代理人を偽造しますか?

0 投票する
1 に答える
6130 参照

fakeiteasy - メソッドが特定のタイプの引数で呼び出されたことを確認する方法

特定のタイプのオブジェクトでメソッドが呼び出されたことを確認する必要があります

これは、呼び出されたことをテストしたいメソッドとのインターフェースです。

テスト:

player1.Send私が得る多くの異なるオブジェクトで複数の呼び出しがあるのでInvalidCastException

誰かがこれを正しく行う方法を知っていますか?

0 投票する
1 に答える
1694 参照

c# - FakeItEasy を使用して、偽のメソッド呼び出しでイベントを発生させますか?

私は次の行に沿って何かをしようとしています:

これは、この回答によるラッパー インターフェイスfakeTimerの偽物です。ITimer

Experssion Tree 内で割り当てを行うことができないため、明らかにこれは機能しません。

私が実際に達成しようとしているのは、Startメソッドが呼び出されたときにタイマー イベントの発生をシミュレートすることです。Startこのようにして、への呼び出しが実際に発生したと断言できます。

(代替の)アイデアはありますか?

編集私はばかで、責任は私にあります! A.CallToあるべきではないところに、誤って余分な を追加しました。この質問を削除する代わりに、Patrik Hägneに彼の正当な評判を与えるためにそのままにしておきます :)

0 投票する
1 に答える
1559 参照

c# - 偽の DbDataAdapter を作成すると FakeItEasy.Core.FakeCreationException がスローされる

Visual Studio 2010 で簡単なテスト プロジェクトをセットアップしました。単体テストには nunit 2.6.1 を使用し、FakeItEasy 1.7.4582.63 のモックには NuGet 経由でインストールします。

次のコードを使用して DbDataAdapter を偽造しようとしています。

.NET Framework 3.5 を使用してテストを実行すると、すべて正常に動作し、test1 はパスします。しかし、フレームワークのバージョンを .NET 4.0 に設定すると、次の例外が発生します。

.NET 4.0 で動作させるためのアイデアを歓迎します。

さようなら、イェルク

0 投票する
1 に答える
1060 参照

c# - オーバーライドされた C# FakeItEasy フェイク メソッド

クラスの偽造に問題があります:

クラス A にはメソッドがあります。

クラス B はクラス A を拡張し、メソッドをオーバーライドします。

クラス B をモックしてmethod関数をテストする必要があります。base.method(argument)問題は、関数の呼び出しを避ける必要があることです。メソッドの実装をテストし、その関数をモックして int を返すだけです。

FakeItEasyでどうすればできますか? または他のモッキングフレームワーク?

アップデート

問題の解決方法:
関数の作成:

クラスBの「メソッド」関数でそれを実行します。MethodCaller 関数をモックするよりも

0 投票する
1 に答える
141 参照

visual-studio - Fake.InitializeFixtureを使用する際の警告

私は次のようにFake.InitializeFixtureを使用しています。

テストを実行すると正常に動作しますが、問題はVisualStudioから次の警告が表示されることです。

警告27フィールド'...._someDependency'は割り当てられず、常にデフォルト値nullになります

コンパイル時に警告をゼロにしたいのですが。これらを取り除く方法はありますか?

0 投票する
1 に答える
550 参照

c# - MustHaveHappenedは、同じオブジェクトで2回呼び出されると失敗します

次のテスト中のクラス(および関連するDTOクラスとインターフェイス)があるとします。

そして、このテストメソッド(IBar.Test()が2回呼び出されることを確認しようとします:1回はNum = 1で、もう1回はNum = 2で):

最初の「MustHaveHappened」呼び出しは失敗します。IBar.Test()の両方の呼び出しで使用されるDTOが同じインスタンスであることが原因であることがわかりました。2つの異なるDTOを使用してIBar.Test()を呼び出すようにコードを変更すると、期待どおりに機能します。

私の質問は:これはFakeItEasyのバグですか、それとも私は何か間違ったことをしていますか?