問題タブ [moq]

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

asp.net-mvc - Moqを使用してHttpRequestをモックするときにServerVariable値を設定しますか?

ASP.NET MVC での単体テストのために Moq を使用して HttpRequest オブジェクトをモックしています。リクエストで ServerVariables (LOGON_USER) の 1 つを設定する必要があります。これは可能ですか?次の方法を試してみましたが、ServerVariables コレクションはオーバーライドできないため、例外が発生します。

テスト用に ServerVariable 値を設定することはできますか?

特定のキーを設定しようとするのではなく、新しい NameValueCollection を渡す必要がありますか?

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

c# - Moq オブジェクトを反映すると、2 つの追加プロパティが生成されます

リフレクションを使用して、あるオブジェクト タイプから別のオブジェクト タイプに変換するメソッドがいくつかあります。私は Moq を介して変換メソッドをテストしている最中で、処理方法がわからない動作に遭遇しました。Moq オブジェクトを調べて PropertyInfo を取得すると、さらに 2 つのオブジェクトが得られます。

  • Moq.Mock``1[Namespace.Class+IElement] Mock
  • Moq.Mock Mock

これを再現するコードは次のとおりです。

これらのプロパティを取得せずに Moq オブジェクトを反映する方法はありますか?

0 投票する
4 に答える
10307 参照

vb.net - Moq を使用した VB.NET メソッドのモック

メンバーシップ プロバイダーを使用してユーザーの詳細を更新するコントローラー アクションを単体テストしようとしています。今まで使いやすかったMoqを使っています。

問題は、何も返さないメソッドへの呼び出しをモックするように見えないことです。

モック メンバーシップ サービスのセットアップがコンパイルされません。エラーは次のとおりです。

これらの引数を使用してアクセス可能な「セットアップ」を呼び出すことができないため、オーバーロードの解決に失敗しました:

'Public Function Setup(Of TResult)(Expression As System.Linq.Expressions.Expression(Of System.Func(Of Services.IMembershipService, TResult))) As Moq.Language.Flow.ISetup(Of Services.IMembershipService, TResult)' : 式は値を生成しません。

'Public Function Setup(Of TResult)(Expression As System.Linq.Expressions.Expression(Of System.Func(Of Services.IMembershipService, TResult))) As Moq.Language.Flow.ISetup(Of Services.IMembershipService, TResult)' : 型パラメーターのデータ型は、これらの引数から推測できません。データ型を明示的に指定すると、このエラーが修正される場合があります。

'Public Function Setup(expression As System.Linq.Expressions.Expression(Of System.Action(Of Services.IMembershipService))) As Moq.Language.Flow.ISetup(Of Services.IMembershipService)': 式は値を生成しません。

私は何を逃したのですか?クラスに呼び出したいメソッドがある場合はいつでも、Moq を使用するのではなく、偽のクラスを作成する必要がありますか?

編集:

OK、少し読んでみると、VB で Function() を使用してラムダを表現する方法が原因であることがわかります。これには結果が必要です。

誰かがこれに対する回避策を見つけましたか、それともメソッドを偽造するために Moq を捨てる必要がありますか?

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

c# - HttpApplication の単体テスト

いくつかの追加機能を追加する HttpApplication から派生したクラスがあります。これらの機能を単体テストする必要があるところまで来ました。つまり、HttpApplication の新しいインスタンスを作成し、リクエストを偽造し、レスポンス オブジェクトを取得できる必要があります。

HttpApplication オブジェクトの単体テストを正確に行うにはどうすればよいですか? 現在 Moq を使用していますが、必要なモック オブジェクトを設定する方法がわかりません。

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

c# - HttpResponseBase.End()をモックするにはどうすればよいですか?

Moqを使用してHttpResponseBaseのモックオブジェクトを作成しています。ライブラリでHttpResponseBase.End()が呼び出されたことをテストできる必要があります。これを行うには、呼び出しの前にテキストを指定し、呼び出しの後にテキストを指定します。次に、End()を呼び出す前のテキストのみがHttpResponseBase.Outputに存在することを確認します。

問題は、ASP.NETの場合のように、HttpResponseBase.End()をモックして処理を停止する方法がわからないことです。

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

unit-testing - MoqカスタムIIdentity

カスタムRoleProvider(標準のWebフォーム、MVCなし)を作成し、それをテストしたいと思います。プロバイダー自体は、IIdentityのカスタム実装と統合されます(いくつかのプロパティが追加されています)。

私は現在これを持っています:

ただし、VS2008でこのテストを実行すると、次のエラーメッセージが表示されます。

オーバーライドできないメンバーの設定が無効です:id => id.IsAuthenticated

なぜこうなった?そして最も重要なのは、それを解決するために何をする必要があるのでしょうか?

Grz、Kris。

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

unit-testing - MoqでカスタムRoleProviderを単体テストしますか?

カスタム ライブラリにカスタム RoleProvider を作成しました。ユニットテストをしたいと思います。Moq を介して、偽の HttpContextBase を作成しました。これをテスト対象の RoleProvider に渡す方法は?

Identity は、カスタム テスト実装クラスです。これはうまくいきます。プロバイダーで偽のコンテキストを渡す方法がわかりません。これは MVC アプリケーションではありませんが、情報が必要な場合は標準の Web フォームです。

Grz、クリス。

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

c# - Moqの「Verify」メソッドの奇妙な動作

次のコードでは、Test1は成功しますが、Test2は失敗します。

この動作は実際には非常に便利ですが、なぜこのように機能するのか理解できません。Test2も成功するはずです!

私が持っている唯一のアイデアは、どういうわけか、Verifyは「myMethod」が別のテストケースから呼び出されたことを知るのに十分賢いので、「カウントされない」ということです。

ところで、Test1でVerifyの呼び出しを削除しても、同じことが起こります(Test2は失敗します)。

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

c# - データベース トランザクション パラメータをモックすることは可能ですか?

インターフェイスの実装を単体テストしようとしていますが、SqlTransaction パラメーターをインターフェイス メソッドの 1 つに正常にモックアウトするのに少し苦労しています。

私が興味を持っているインターフェイスとテスト中のメソッドは次のようになります..

私はMoqとさまざまな構文アプローチを使用してデータベースオブジェクトをモックアウトしましたが、あまり運がありませんでした.. DbTransaction、DbConnection、DbCommand など)。

私が知りたいのは、主に、この方法でトランザクションをモックアウトできるかどうか、またはここで間違ったツリーを吠えているかどうかです。幸いなことに、プロバイダー固有の SqlTransaction ではなく、一般的な DbTransaction パラメーターを使用するようにインターフェイスを変換できる可能性がありますが、それがモック化に苦労している理由であるとは確信していません。

これが(そしてこれは完全に間違っている可能性があるので、私がこれに間違って近づいている場合は私を修正するかコメントしてください)コードをモックするためにこれまでに得たものです...

ただし、これは mockCommand.Setup 行で ArgumentException をスローするようです.. (オーバーライドできないメンバーでの無効なセットアップ)

モックされた SqlTransaction パラメータを使用してこのメ​​ソッドを正しく単体テストする方法について、アイデアや提案はありますか?

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

c# - Moqを使用した「短絡」voidメソッド?

私のチームは最近、Moqをモックフレームワークとして使用することを決定しました。これは、その驚異的な柔軟性と非常に読みやすい構文のためです。私たちはそれに慣れていないので、単純な質問のように見えるものに遭遇しています-検索(ここでは、Googleなど)は、Moqの他のニュアンスに関する多くの議論を見つけますが、必ずしも私が求めているものではありません、そして一見関連しているように見えるいくつかの質問は、赤いニシンに変わりました。

外部依存関係(正確にはAmazon SimpleDb)を持つクラスをテストしていますが、テストをライブ接続にバインドしたくありません。特定の方法:

  • いくつかの「ビジネス」ロジックを適用します
  • 必要に応じて、構築したプロバイダーを介してSDBへの呼び出しを呼び出します。呼び出しましょうSaveItem()

必要なコンテキストを設定し、呼び出されたことを確認するようにこれを単体テストしたいのですが、実際には呼び出されないSaveItem()方法でSaveItem()(Aのため)、SDBのプロバイダーは完全に水和されておらず、爆撃される可能性が高いモックですB)そのトランザクションに何百、何千回も支払う必要はありません)。

値を返すメソッドを扱う場合、これは簡単なことでした。

ただし、上記で概説した場合、私の " SaveItem()"メソッドは無効であるため、MoqのReturns()メソッドを使用するオプションは使用できません。そして、SaveItem()呼び出されたことを確認するためのコールバックを設定することはできますが、実際には何もしないようにすることはできません。

ナイーブ/希望に満ちた、私は次のことがうまくいくと思いましたが、それでもメソッドを呼び出すようです:

それで、百万ドルの質問:次の架空のコードのMoqは何ですか?