問題タブ [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
単体テストに NSubstitute を使用しています。テスト中のメソッド内の void メソッドにオブジェクトが送信されていることを確認する必要があります。プロパティの 1 つが特定の値であるオブジェクトが送信されていることを確認するだけで済みます。
例えば。
2つの簡単な方法
私がテストを書いているメソッド。
人の名前が A で始まる場合、NSubstitute を使用して、「NameStartsWithA」が A で始まる名前で呼び出されたことを確認する必要があります。
これまでの私の単体テストは次のようになります
しかし、Nsubstitute は関数が呼び出されなかったと言っていますが、「RecievedArgumentsAny()」で同じテストを行うと、合格します。
この例が、私が達成しようとしていることを理解するのに役立つことを願っています.
vb.net - vb.net モジュールで NSubstitute を使用する
VB モジュールにグループ化された既存の静的メソッドがいくつかあります。
会社にユニットテストを導入したいと考えており、NUnitとNSubstituteの使用を検討しています。
テストしたい VB モジュールの代替を作成できないようです。または、これを行う方法の例を見つけることもできません。私は次のようなことをしようとしています:
しかし、VB は「MyModule は型であり、式として使用することはできません」と教えてくれます。
私が試したら
VB から、「モジュール 'MyModule' は型として使用できません」と表示されます。
構文が間違っていますか、それともばかげたことをしようとしていますか?
unit-testing - NSubstitute VerifyAll と同等
NSubstitute には MOQ のVerifyAll
呼び出しに相当するものがありますか? すべての代替で受信されると予想されるすべての呼び出しが、理想的には単一のTearDown
メソッドで実際に呼び出されていることを確認したいと思います。現在、受信した各通話をテストで個別に検証していますが、これは理想的ではありません。まず第一に、代理で設定されたが実際には呼び出されない呼び出しは、個別に明示的に検証されていなければ、ネットをすり抜けてしまいます。
c# - NSubstitute でコールバックを介して呼び出しパラメーターを確認する
置換された呼び出しに渡されたパラメーターが一致しないため、NSubstitute で失敗したテストがあります。テストされている関連コードは次のとおりです。
この問題は、ExpectedUserPermissions.AuthorisedPageIds
次のようなプロパティで発生します。
ご覧のとおり、コレクションPageId
内からプロパティを抽出し、それを として返す LINQ Select があります。そのプロパティ内のプロジェクションは新しいオブジェクトを作成するため、2 つのオブジェクトが異なるものとして認識されるため、置換は一致しません。ApplicationPagePermissions
IEnumerable<string>
渡されたパラメータにコールバックを作成して、GetMenuData
その値を調べることはできますか?
NSubstitute コールバックに関するドキュメントでは、呼び出しに渡されるパラメーターではなく、呼び出しからの戻り値の調査についてのみ説明しています。
c# - 使用する引数指定を判別できません
NSubstitute に問題があります。私はこの短いコードを持っています:
したがって、(void) メソッドReportingCycleDeliveryRepository.Add()
が ReportingCycleDelivery 引数で呼び出されると、この項目がRepCycleDeliveries
リストに追加されます。
ただし、代わりに例外をスローします。
NSubstitute.Exceptions.AmbiguousArgumentsException
「使用する引数仕様を決定できません。同じ型のすべての引数に仕様を使用してください。」
何故ですか?NSubstitute が使用する正しい引数指定を決定できないのはなぜですか? 引数は任意のReportingCycleDelivery
項目にすることができるというヒントを明確に提供しています。
unit-testing - 単体テストでの関数呼び出し順序の検証
2 つの関数呼び出しが正しい順序で行われることを確認する単体テストが必要です。この例では、最初の関数はファイルを暗号化してファイル システムに保存し、2 番目の関数は暗号化されたファイルを (FTP 経由で) サード パーティのプロセッサに送信します。
NSubstitute をモック フレームワークとして使用し、FluentAssertions を使用してテスト検証を支援しています。これは、すぐに使用できる NSubstitute で実現できるものではないようです。
c# - 別の代替を返すメソッドの結果を返すと、NSubstitute で例外がスローされます
NSubstitute を数回使用しているときに奇妙な問題に遭遇しました。回避方法は知っていますが、説明することはできませんでした。
問題を証明するために最低限必要なテストと思われるものを作成しました。これは、メソッドを使用して置換された戻り値を作成することと関係があるようです。
上記のテストを実行すると、次の例外が発生します。
ただし、これを返すようにテスト メソッドを変更すると、次のようになります。
またはこれ:
できます。
誰かがなぜこれが起こるのか説明できるかどうか疑問に思っていますか?
c# - プライベート メソッドに関する単体テストの作成方法
パブリック メソッドとプライベート メソッドを持つクラスを単体テストしようとしていますが、プライベート (ベースで保護された抽象) として設定されている特定のメソッドを単体テストしたいと考えています。メソッドを公開することはできず、このメソッドをテストするために完全なプロセスを実行したくありません。このメソッドへの入力引数と戻り値が期待どおりであることだけが懸念されます。
この質問が強調するように、メソッドを公開したくありません。
プライベート メソッドを公開して単体テストを行う...いい考えですか?
私の質問は、プライベート メソッドをテストするさまざまな方法とは何か、どの手法を優先する必要があるのか、その理由は何ですか?
私はこの質問を読みました ( How do you unit test private Methods? ) が、受け入れられた回答がまだ最良の回答であるかどうか、または数年後にもっと良い方法があるかどうかを知りたいです。
この質問が「どのようにプライベート メソッドを単体テストしますか?」の重複と見なされる場合 そこにコメントを追加し、更新を依頼します。アドバイスしてください。