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

0 投票する
3 に答える
898 参照

namespaces - NSubstitute を参照するアセンブリで DynamicProxy タイプを使用する場合の「両方のアセンブリにタイプが存在する」エラーを修正する方法は?

DynamicProxy 3.1 を使用してランタイム インターセプトを行うアプリケーションがあります。モックにNSubstituteを使用するテスト アセンブリがあります。完全にブートストラップされたコンテナー (StructureMap を使用して傍受を行う) に対していくつかの「統合」テストを作成InterceptWithしたので、コンテナーから出てくる特定の型が適切にプロキシされていることを確認できます。

ただし、DynamicProxy 参照もNSubstitute アセンブリ内にあることを示すこのエラーが表示されます。(それは溶けているように見えます)。

この紛争の周りにとにかくありますか?

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

c# - NSubstitute:配列引数を使用して受信したメソッドをチェックします

NSubstituteモックのメソッドが特定の配列引数で呼び出されていることを確認したいと思います。

インターフェイスにIProcessorメソッドがあるとしvoid ProcessSomething(Foo[] something])ます。テスト対象のクラスの名前がであるとしCommanderます。私は次のようにテストを設定しました:

呼び出しは次のReceived()ように失敗します。

つまり、これはProcessSomethingが以外の配列で呼び出されたように見えfoosますね。

代わりに、を使用して引数値をキャプチャするようにこれをテストするとArg.Do()、成功します。

したがって、引数をキャプチャして、(この例ではNUnitを使用して)等しいかどうかを比較することはできますが、受信した呼び出しの検証は失敗します。

これはNSubstituteのバグですか、それとも間違って使用していますか?

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

asp.net-mvc - Substitute で Controller クラスのパラメータとして Interface を渡す方法

nSubstitute は初めてです。そして、コントローラークラスのテストメソッドを書いています。以下に示すように、Substitute クラスを持つ GetDefaultStateTest() という TestMethod があります。

私のコントローラークラスは、以下のようにパラメーター化されたコンストラクターを持っているためです。

テスト メソッドを実行すると、null 参照の問題が発生します。パラメータ ICustomer が null であるため

この問題を解決する方法。

0 投票する
2 に答える
835 参照

unit-testing - NSubstitute モックで MS Fakes シムを使用しても問題ありませんか?

NSubstituteを使用して、単体テスト用の外部オブジェクトをモックしています。ただし、多くのレガシー クラスはインターフェイス経由で呼び出されず、モックで簡単に置き換えることはできません。

Microsoft Fakesを使用することを検討しましたが、 「モック フレームワークと MS Fakes フレームワーク」 の質問に対する回答によると、

「より完全な機能を備えたモッキング フレームワークを既に使用している場合、Fakes スタブには重要な部分が欠けているように感じるかもしれません。」

同じテストで MS Fakes シムを NSubstitute モックと一緒に使用することは可能ですか?

互換性の問題を予期する必要がありますか?

0 投票する
2 に答える
2914 参照

c# - NSubstitute と Unity

私は現在、Unity と NSubstitute を使用して、DI とモッキングを学ぼうとしています。私はまた、この質問から取られた自動モック拡張機能を使用しています:これは Unity (Castle Windsor の代わりに) で可能ですか?

以下の単体テストでは、メソッド Add() から NSubstitute の戻り値 10 を設定しようとしています。ただし、コントローラー呼び出しを介してデバッグする場合、割り当てられた値は、予想される 10 ではなくデフォルトの 0 です。プロキシはメソッド呼び出しをインターセプトしていないようです。

これは、タイプ/コンテナを正しく登録していないことが原因であると思われます。誰かが私を正しい方向に向けることができますか?

そして私のコントローラーコード

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

.net - NSubstituteを使用して実行時に作成されたオブジェクトのLINQ-to-SQLナビゲーションプロパティをモックする

私はここで困惑しています。私は、こことNSubstituteのドキュメントの両方で、私の質問に対する実行可能な答えを見つけるのに苦労しました。

オブジェクトがリポジトリに追加された後、そのオブジェクトのナビゲーションプロパティにアクセスして他の作業を行う、サービスメソッドの単体テストを試みています。単体テストがコード内で新しいオブジェクトのナビゲーションプロパティにアクセスするポイントに到達すると、NullReferenceExceptionが発生します。モックで何を返すかを教えていないので、なぜ例外が発生するのかはわかりますが、ナビゲーションプロパティにアクセスするときにユニットテストに何を返すかをユニットテストに伝える方法がわかりません。これはすべて、オブジェクトが実行時に作成されるためです。

簡潔にするために、関連するメソッドの部分のみを含めます。

他に役立つことがあれば、教えてください。

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

autofac - AutofacContrib.NSubstituteを使用して、具象クラスの偽物を登録する簡単な方法

として解決されるクラス

このように偽造することができます(テスト用)

しかし、私のクラスが次のように解決された場合はどうなりますか

autofac登録でこれを偽造するにはどうすればよいですか?AutofacContrib.NSubstituteを使用している場合。どうすればこのようなことを達成できますか

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

c# - System.Action を入力パラメーターとして使用するデータ アクセス層に渡される引数を取得するにはどうすればよいですか?

最近継承したアプリケーションの単体テストを作成しようとしています。以前のプログラマーが使っていたものなので、現在 NSubstitute を使っていますが、私はそれに執着していません。

私がテストしているメソッドは、DataService クラスの Create メソッドを呼び出します。

Create メソッドの呼び出し

DataService の作成方法:

私が取ったアプローチ (そしておそらくもっと良い方法があるかもしれません) は、NSubstitute を使用して DataService をモックすることです。最後にアサーションを行っているときは、Create メソッドが呼び出されたことを確認しています。

ただし、メソッドに送信された入力が正しいことも確認したいのですが、ここで問題が発生しています。Create メソッドに渡された System.Action オブジェクトを取得できますが、パラメーター (作成メソッドの呼び出しコード スニペットに投稿されている ContactRoleId、ContactId など) を引き出す方法がわかりません。

それで、私が求めているのは次のとおりです。

  1. これらの入力パラメータにアクセスして、正しい引数がデータ サービスに渡されていることを確認するにはどうすればよいですか? それは可能ですか?
  2. 私が現在やろうとしていることよりも、これを行うためのより良い方法はありますか?

解決

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

c# - NSubstitute When...Do定義が後続の定義によってオーバーライドされない

上記のコードスニペットでは、(1)と(2)の両方がcounter ++動作を表示しており、When...Do動作がオーバーライドされていないことを示しています。さまざまなコールバックをフックアップするテストシナリオを生成するには、この動作が必要です。

これをどのように達成する必要がありますか?