問題タブ [partial-mocks]

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 に答える
843 参照

testing - 部分的なモックへの期待-NullReference例外

RhinoMocksを使用した部分的なモックに問題があります。

..そして「Expect」でNullReferenceExceptionが発生します。ライン..

FormsAuthenticationService実装するものを追加しますIAuthentication

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

c# - 期待値が設定されていない場合でも、部分モックですべての仮想メソッドがモックされているのはなぜですか?

テストしたい ValidateChildren メソッドでいくつかの検証を行うユーザー コントロールがあります。ユーザー コントロールの部分的なモックを作成しましたが、ValidateChildren メソッドに何の期待も設定していませんが、単に呼び出しているだけで、単にスキップされ、メソッド内のコードは実行されません。何が起こっているのかを理解するために、次のような簡単なテストを作成しました。

これを使用してテストします。

今、私は foo.Method1 がモックされ、 foo.Method2 がモックされないことを期待しています。しかし、これは常にfalseを返し、デバッガーでステップスルーしようとすると、foo.Method2()がステップオーバーされ、ステップインできません。

理由はありますか?

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

rhino-mocks - RhinoMocksモック継承インターフェース

BaseClassなどの基本クラスから継承するDerivedClassなどのクラスがあります。BaseClassは、IBaseClassと呼ばれるインターフェイスを実装します。IBaseClassには、整数の自動プロパティであるTestPropertyと呼ばれる1つのプロパティがあります。

私はPartialMultiMockDerivedClassのように:

次に、次のように期待値を設定します。

しかし、私は次の例外を受け取り続けます:

「無効な呼び出し、最後の呼び出しが使用されたか、呼び出しが行われていません(仮想(C#)/オーバーライド可能(VB)メソッドを呼び出していることを確認してください)。」

BaseClassのTestPropertyの実装を仮想としてマークすると、すべてが機能しますが、なぜこれが必要なのかを理解しようとしています。DerivedClassがIBaseInterfaceを実装している場合、部分的なモック機能を取得するために仮想としてマークする必要はありません。(少なくとも私はそうではないと思います-私が間違っている場合は私を訂正してください)

次に、もう少し進んで、マルチモックをIBaseInterfaceにキャストし、次のように期待値を設定しようとしました。

このテストは例外なく実行されるようになりましたが、TestPropertyから返される値は期待どおり1ではなく、0、つまりintのデフォルト値です。これは、スタブに似た動作を私に示唆しています。

私が混乱しているので、可能であれば、誰かがこれをもう少しよく理解するのを助けるために説明できますか?継承されたインターフェースを持つクラスを部分的にマルチモックすることはできませんか?インターフェースに期待値を設定すると、スタブのような動作が見られるのはなぜですか?

前もって感謝します。

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

dependency-injection - 部分的なモックよりも依存性注入を優先しますか?

私はこのSOの質問を知っていますが、より一般的な用語で主題を扱っています.

依存性注入よりも部分モックの使用を優先する必要がありますか? 私の質問は、OCMock からの次の引用に基づいています。

anObject と同じ方法で使用できるモック オブジェクトを作成します。スタブ化されていないメソッドが呼び出されると、anObject が転送されます。スタブ化されたメソッドが、モックではなく anObject への参照を使用して呼び出された場合でも、モックによって処理されます。

これは、(プロパティの) 依存関係をコンストラクターに (またはセッター インジェクションを介して) 注入する代わりに、部分的なモックを使用してスタブ化できることを意味します。

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

java - コードのにおいとしての部分的な嘲笑?

「部分的なモック」とそれを必要とするコードについて、なぜこれほど多くの嫌悪が起こっているのでしょうか?

(理論上の)実装例を次に示します。

さて、私の理解では、これはよくリファクタリングされたコードです。

operationA と operationB を UNIT テストし、各シナリオで監査が行われること確認したいが、監査コードの詳細をテストする必要がない場合は、部分モックを使用します。

非常に多くのプロジェクト (EasyMock、Mockito など) がリファクタリングを推奨する理由は何ですか?

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

java - mockitoを使用したユニットテスト(部分的なモック)

Mockitoに問題があります。

そのようなことをすることは可能ですか?

私はMockito1.7を使用しています。

「スパイ」システムがあるのを見ましたが、テストするアイテムにそれを使用することは推奨されていないと言われています(なぜですか?)。

とにかくそのスパイ機能を試しましたが、奇妙な動作をします。

私がやりたいことを確認してください:

実際のコード:

テストコード:

彼らが言ったように、私はスパイで問題になる可能性のあるwhen thenReturn構文を避けました(しかし、それはとにかく機能しません)

奇妙なことに、assertTrue(x.methodB(argument).equals( "good")); 大丈夫です

2番目のassertTrue(x.methodA(argument).equals( "good"));のみ OKではありません

実際、helper.methodA(argument)は「toto」を返します->模擬結果ではなく実際の結果

この場合、mockitoに「good」を返すように指示することはできません??? テストクラスがmethodBを呼び出した場合は問題ないようですが、スパイのメソッドがmethodBを呼び出した場合、それは機能しなくなります...

どうしたらよいかわかりません...同じクラスの2つのメソッドを単体テストし、テストを互いに独立させて、有名な模擬テストフレームワークがこの基本機能を実装しないようにするのは、とても奇妙なことです。 ?それは私たちが単に実際のユニットテストと呼んでいるものではありませんか?テストされたオブジェクトでスパイメソッドを使用しないように彼らが言う理由を理解していない...

ありがとう

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

unit-testing - 私の PartialMock メソッドが私の期待を無視するのはなぜですか

私は PartialMock として使用している基本クラスを持っています

target.ReleaseOp(request) には、3 行目で期待値を設定した contextManager.RemoveContext メソッドへの呼び出しがありますが、それでも次のエラーが発生します。

Rhino.Mocks.Exceptions.ExpectationViolationException: IContextManager.RemoveContext("e04c757b-8b70-4294-b133-94fd6b52ba04"); 予想 #0、実際の #1。

これは、これが機能しなかった最初のテストです (他の 45 程度は問題ありません) が、A) 部分モック、および B) void を返すモック メソッドを使用した最初のテストでもあります。何か案は?

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

c# - RhinoMocks の PartialMock メソッド呼び出しがモックされないのはなぜですか?

基本クラスの保護されたヘルパー メソッドをテストするために、部分的なモックを作成しています。保護されたメソッドが存在するかどうか、または注入された依存関係であるべきかどうかについての議論にはあまり興味がありません。

EnumerationServiceBase_Accessor は、VSTS 2010 によって生成されたプライベート アクセス オブジェクトです。17 行目で CreateNewContextResponse(request) への呼び出しをインターセプトする期待値が効果的に設定されていないという事実を除いて、以下のすべてがうまく機能します。これは、再生中に partialTarget.EnumerateOp(request) によって呼び出される保護されたメソッドです。代わりに、基本クラスの実際の実装が呼び出されています。ここで何が間違っていますか?

これは、EnumerationServiceBase.cs に実装されている EnumerateOp(request) です。

編集:不要な情報を削除しました。

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

tdd - Rhino Mocks 3.6 で部分モックを実装するために、アセンブリで InternalsVisibleTo を使用してオブジェクトを設定する方法

以下に、テストしたいオブジェクトのコードを示します。これは Business というアセンブリにあり、AssemblyInfo.cs に属性を追加して、別のアセンブリにあるテストおよび rhino モックから内部を見えるようにしました。GenerateReport メソッドをテストするとき、ValidateWorkingDirectory への呼び出しが「内部」であると偽造できません (System.ApplicationException : メソッド呼び出しの前に作業ディレクトリを設定する必要があります)。ValidateWorkingDirectory を公開すると、問題は解決します。InternalsVisibleTo がこの問題に対処すると思いました。

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

rhino-mocks - モックメソッド呼び出しから呼び出されたプライベートメソッドの呼び出しで部分モックテストが失敗する

以下に、テストしたいオブジェクトのコードを示します。テストで部分的なモックを使用しており、GenerateReportメソッドをテストするときにInsertDataの呼び出しをモックアウトしたいと考えています。何らかの理由で、私のテストはInsertDataからDoSomeStuffまで続き、Path.Combine行で失敗します。私は何が欠けていますか?