問題タブ [nsubstitute]
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.
unit-testing - NSubstitute はどれくらい安定していますか?
私の会社は、分離フレームワークの標準化を目指しています。私はMS Stubsを調べていました(Moles はクールに見えたので、同じフレームワークで維持しようと考えたからです)。ただし、スタブはまだプライム タイムの準備が整っていません (通常の機能ではまだ少しバグがあります)。
だから今、私はそこに他に何があるかを見ています。Moq と Rhino のモックを見てきました。そうしているうちに、 Richard Banks が行った素晴らしい比較に出くわしました。その中で彼はNSubstituteを示しています。私はそこに見えるものが本当に好きです。
ただし、MS スタブに少しばかり悩まされているので、アルファ版/非製品版の分離フレームワークに賭けたくありません。
では、NSubstitute はプライム タイムの準備ができていますか? それともまだ少しバグがありますか?
.net - NSubstituteはrefパラメーターをサポートしていますか?
iterfaceに次のメソッドシグネチャがあります。
私はこのようなパラメータ制約を行います:
しかし、それは参照のために失敗します。refを取り出すと、正常に動作します。しかし、私はここで参照を渡す必要があります。
これを取得する方法はありますか?
補足:私の最終的な目標は、渡された値がnullの場合にSetItemで例外をスローすることです。あなたがそれを手伝うことができれば、あなたは追加のポイントを獲得します!
unit-testing - NSubstitute は部分モックのアイデアをサポートしていますか?
NSubstitute は部分モックのアイデアをサポートしていますか?
c# - NSubstitute-特定のlinq式のテスト
現在開発中のMVC3アプリケーションでリポジトリパターンを使用しています。私のリポジトリインターフェースは次のようになります。
多くの場合、サービスクラスでメソッドをコーディングするときは、FindFirst
andFind
メソッドを使用しています。ご覧のとおり、どちらもlinq式を入力として受け取ります。私が知りたいのは、NSubstituteを使用して、コードでテストする特定の式を指定できる方法があるかどうかです。
それで、これは私が言及したリポジトリメソッドの1つの使用法を説明するサービスメソッドの例です:
それで、NSubtituteを使用して、特定のlamda式をテストできる方法はありi => !i.IsProcessed && i.IsConfirmed
ますか?
任意のガイダンスをいただければ幸いです。
c# - NSubstituteの「Do」イベントが発生しない
推論型を使用したNSubstituteのコンパイルに問題があります。ステートメントにreturn型以外のものを設定して.Do()
から、カウンターを使用して呼び出された回数を確認しようとすると、カウンターは更新されません。
文字列を返すメソッドをモックしています(基本的にはの抽象化ですFile.ReadAllText()
):
ドキュメントに記載されている代替フォームは、次のいずれかで機能するようです。
私のカウンターは決して変わりません。
http://nsubstitute.github.com/help/return-from-function/の例に従っているので、何が間違っているのかわかりません-APIは変更されていますか?
.net - 'out'パラメータをモックする方法は?
最新のNSubstituteリリース1.1.0、2011年5月21日をダウンロードしました。このリリースより前は、NSubはパラメータをサポートしていなかったようです。中間リリースであるNSubGoogleGroupを通じてサポートを提供するために、いくつかの作業が行われたようです。
ですから、すべてのピースを機能させるのに少し問題があります。SystemWrapperを使用してDirectoryInfoをモックしています
これが私のインターフェースです:
...そしてテスト:
INetworkPathインターフェースからoutパラメーターをモックアウトする方法はありますか?
アップデート
次のことを試しました:コンパイルされますが、 DirectoryInfo
nullを返します:
c# - NSubstitute で予期しないときに関数が呼び出される
関数を呼び出すようにモックをセットアップするときに、NSubstitute から予期していなかった動作が発生します。動作の単純化されたバージョンは次のとおりです。
テストはパスしますが、次の出力が得られます: 0 1
これは、mockedFoo.GenerateString("0"); への呼び出しを示しています。実際には GetValue() 関数が呼び出されます。
Moqで同じことをすると:
その後、私のテストも合格しますが、結果は得られます: 1
関数が呼び出されなかったことを示します。
この動作はどこかで説明されていますか、それとも間違った方法で何かを設定していますか?
asp.net - Response.Cache.VaryByHeader の Nunit テスト
HttpResponse を使用する関数で NUnit と NSubstitute を使用して単体テストを行っています。これらのオブジェクトをモックできないことはわかっているため、それらといくつかのプロパティを表すインターフェイスを作成しました。
Response.Cache.VaryByHeader のインターフェイスを作成する方法がわかりません。
これは私が実際にテストしている関数です:
「タイプ IHttpCacheVaryByHeaders の式にインデックスを適用できません」というエラーが発生します。応答とキャッシュ用のインターフェースがありますが、VaryByHeaders をインターフェースで表現し、それを具体的なクラスで使用するにはどうすればよいですか?
c# - void メソッドの When..Do で Arg.Do() が予期されるときに起動しない
私は私のテストで以下の構造を持っています。これは、特定のログが正しい複雑な引数オブジェクトで呼び出されていることをテストすることを目的としています。logThing にはメソッドがあります。
そのため、When..Do を使用して例外をスローさせています。
ただし、Arg.Do() への予想される呼び出しは、このセットアップでは発生しません。
catch ブロックにブレークポイントを配置し、Visual Studio のイミディエイト ウィンドウを使用して、logThing で RecievedCalls<>() を呼び出しました。正しい引数を使用して logThing を 1 回呼び出した記録があります。Arg.Do だけです。 When..Do ブロックが終了した後にのみ実行されるようです。これは明らかに、When..Do を投入しているため、到達しないことを意味します。
NSubstitute がこのような方法で呼び出しを行うとは本当に予想していませんでした。これは予想される動作ですか? もしそうなら、このように入ってくる引数をテストするために私ができることはありますか、それとも引数のチェックをメインの When..Do ブロックに入れる必要がありますか (読みにくくなります)?
テスト中のシステムは、logEntry と一緒にラップするなど、例外に対してさまざまなことを行うため、これらすべてのチェックを 1 つのテストで行うと便利です。2 つの別々のテストに分割することを考えましたが、実現しました私がそれをした場合、間違ったラップされた出力がどこから来ているのかを簡単に突き止めることができませんでした(logEntryを最初に生成した部分、またはそれをラップした部分のいずれかである可能性があります)一方、このパターンを使用して確認できますlogThing は私が期待するものを受け取っています。それでも、それを行うためのより良い方法があれば、私は確かに提案を受け入れます.
mocking - NSubstituteが「セッター」のみのプロパティ呼び出しをインターセプトする
NSubstituteを使用して、プロパティセッターに渡す値を取得する方法はありますか?
たとえば、次のインターフェイスがある場合:
私が作成した代替品があると言う例:
代替の「set」メソッドのいずれかが呼び出された場合に、値をインターセプトしてキャプチャする方法はありますか?