問題タブ [rhino-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 投票する
7 に答える
28752 参照

c# - C# と RhinoMocks を使用したテスト駆動開発のベスト プラクティス

私のチームがテスト可能なコードを作成できるようにするために、C# コード ベースをよりテストしやすくするためのベスト プラクティスの簡単なリストを作成しました。(ポイントのいくつかは、C# のモッキング フレームワークである Rhino Mocks の制限に言及していますが、ルールはより一般的にも適用される可能性があります。) 従うベスト プラクティスはありますか?

コードのテスト容易性を最大化するには、次の規則に従います。

  1. 最初にテストを書き、次にコードを書きます。理由: これにより、テスト可能なコードを記述し、コードのすべての行に対してテストが記述されるようになります。

  2. 依存性注入を使用してクラスを設計します。理由: 見えないものをモックしたりテストしたりすることはできません。

  3. Model-View-Controller または Model-View-Presenter を使用して、UI コードをその動作から分離します。理由: テストできない部分 (UI) を最小限に抑えながら、ビジネス ロジックをテストできるようにするため。

  4. 静的メソッドまたはクラスを作成しないでください。 理由: 静的メソッドは分離が困難または不可能であり、Rhino Mocks はそれらをモックできません。

  5. クラスではなく、インターフェイスからプログラムします。理由: インターフェイスを使用すると、オブジェクト間の関係が明確になります。インターフェイスは、オブジェクトがその環境から必要とするサービスを定義する必要があります。また、インターフェイスは、Rhino モックやその他のモック フレームワークを使用して簡単にモックできます。

  6. 外部依存関係を分離します。理由: 未解決の外部依存関係はテストできません。

  7. モックするメソッドを仮想としてマークします。理由: Rhino Mocks は非仮想メソッドをモックできません。

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

unit-testing - Rhino Mocks、MbUnit: オブジェクトがイベントを発生させたかどうかを確認する最良の方法

イベントを発生させるテスト中のオブジェクトがあります。Rhino Mocks を使用して発生したことを確認する最良の方法は何ですか?

私が思いつくことができる最高のもの(これよりも良くなると確信しています):

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

.net - Rhino Mocks: ADO.NET の DataRow をモックする方法は?

ADO.NET には、new を使用してインスタンス化できない悪名高い DataRow クラスがあります。これは、Rhino Mocks を使用してモックする必要があることがわかった今、問題です。

この問題を回避する方法を知っている人はいますか?

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

c# - Rhino Mocks の別のスレッドで行われる呼び出しの期待値を設定する方法

バックグラウンド スレッドをスピンアップするように設計されたクラスがあり、そこからマネージャーへの呼び出しが行われます。このマネージャーは、単体テストのためにモックされます。関連するコードの断片は次のとおりです。

問題は、検証時に 2 つの例外がスローされることです。1 つはテスト スレッドで への呼び出しCacheSizeが予期されていたが発生しなかったことを示し、もう 1 つはバックグラウンド スレッド ( 内CacheJanitor) で への呼び出しがCacheSize発生したが予期されていなかったことを示しています。

明らかに、期待は、それらが作成されたスレッドに類似しています。Rhino Mocks に別のスレッドでの呼び出しを期待するように指示する方法を知っている人はいますか (期待が定義されている時点では存在しません)。

編集:

当面はまだ VS 2005 を使用しているという制約について言及するのを忘れていました。Rhino Mocks のバージョンは 3.4 です - 3.5 で試してみますが、改善点のリストにはこの領域の修正が示されていないようです。

とりあえず、この一連のテスト用に独自のモック オブジェクトを作成し、その中に結果を記録しますが、Rhino モックを使用してこれをきれいに達成できるソリューションがあれば間違いなく感謝します。

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

unit-testing - クイック Rhinomocks ヘルプ

誰かがこのコードを見て、それが機能しない明らかな理由があるかどうか教えてもらえますか? コード内で service.getResponse が呼び出されると、モッキング フレームワークは指定したオブジェクトではなく、null のみを返します。

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

rhino-mocks - Rhino Mocks は、Expect ステートメントを書いてくれますか?

リモート データベースと通信する一連の Visual Studio Team System ユニット (実際には統合) テストがあります。テストは遅すぎて扱いにくくなっています。テストのセット全体をモックアウトしたバージョンに置き換えたいと思います。問題は、データベース全体の動作を模倣するすべての expect ステートメントを記述するのが面倒なことです。

既存のテストを実行し、モックされていないバージョンが実際に何を返すかを理解し、機能を複製するために Expect.Call を書き出すツールまたはアドオンを知っている人はいますか? 私はこれがロングショットであることを知っていますが、それは可能であるべきだと感じています.

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

c# - MessageQueueException をスローすることは可能ですか?

MessageQueue.GetPublicQueues を呼び出すクラスを表すために、RhinoMocks でモック オブジェクトを使用しています。メッセージ キューイングがワークグループ モードで動作しているときにスローされる例外 (MessageQueueException) をシミュレートして、例外を正しくキャッチしていることを確認したい

MessageQueueException には public コンストラクターはなく、例外用の標準の保護コンストラクターのみがあります。モック オブジェクト/Expect.Call ステートメントからこの例外をスローする適切な方法はありますか?

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

.net - rhino-mocks - 良いサンプルアプリ

rhino-mock のチュートリアルについていくつか質問があったことは知っています。しかし、ado.net を使用した n 層ビジネス アプリケーションのコンテキストで rhino-mocks を使用するサンプル アプリが世の中にあるのではないかと考えています。

チュートは良いと思いますが、全体像にすべてをまとめているようには見えません. そこで、全体像をまとめたサンプルアプリを探しています。

また、データ アクセス層のロジックのモックとテストを具体的に扱う例が少し不足していると思います。

乾杯アンソニー

0 投票する
6 に答える
5177 参照

asp.net - HttpContext のモックが機能しない

コントローラーの Request.IsAuthenicated 呼び出しを単体テストできるように、HttpContext をモックアウトしようとしています。Scott Hanselman のブログで見つけたコードを使用して、rhino.mocks を使用して HttpContext をシミュレートしています。だから私はこのユニットテストピースを持っています:

私のコントローラーアクションでは if(Request.IsAuthenticated).... 、単体テストを実行しようとすると、テストが null 例外をスローして失敗し、単体テストをデバッグしようとすると、HttpContext がコントローラーに割り当てられていないことがわかります。何か案は?

0 投票する
7 に答える
22830 参照

tdd - メソッドが 1 回だけ呼び出されることをアサートする

メソッドが 1 回だけ呼び出されると主張したい。RhinoMocks 3.5 を使用しています。

これが私がうまくいくと思ったものです:

GetMeMyThing()2 回目の呼び出しでこのテストが失敗するようにしますsource.GetSomethingThatTakesALotOfResources()