問題タブ [mocking]
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.
php - パラメータに基づいて異なる値を返すように PHPUnit MockObjects を取得するにはどうすればよいですか?
'return value'
引数に関係なく返す PHPUnit モック オブジェクトがあります。
私ができるようにしたいのは、モック メソッドに渡された引数に基づいて異なる値を返すことです。私は次のようなことを試しました:
しかし、これにより、モックが引数 で呼び出されないと PHPUnit が文句を言うので、 の定義が最初の の定義を上書きする'two'
と仮定します。methodToMock('two')
だから私の質問は: PHPUnit モック オブジェクトを取得して、その引数に基づいて異なる値を返す方法はありますか? もしそうなら、どのように?
java - jmock を使用して、ファクトリによって返された実装を置き換えることはできますか?
インターフェイスを返すファクトリがありますFormatService
:
単体テスト でFormatService
-のスタブ実装を常に返すように、このファクトリをモックアウトすることは可能ですか?FormatServiceStub
asp.net - ASP.NET - 関心の分離
次のシナリオを想像してみてください。コントロール A とコントロール B を含む Page1 があります。
コントロール A にボタンがあり、このボタンをクリックすると、コントロール B が反応するとします。しかし、これを抽象的な方法で行いたいと考えています。つまり、コントロール A について何も知らないコントロール B を持つことはできず、その逆も同様です。
そうすれば、これらのコントロールを分離して開発し、単体テストによってそれらを駆動できます。
今、私は解決策を持っていると思いました。皆さんがそれについてどう思うか知りたいだけです.
コントロール A のボタン クリックで、セッションに「メッセージ」を配置します。つまり、Session["MESSAGES"] = "ControlA_Click" です。
Page1 の Page_LoadComplete() で、次のように ProcessMessages を呼び出します。
ControlB の ProcessMessage() メソッドでは、次のように、ControlB が関心のあるメッセージに反応できます。
私には、これはうまくいくようです。これにより、これらのコントロールを互いに完全に個別に開発できますが、抽象レベルでのコントロール間の通信も可能です。
このクラッシュを引き起こす可能性があると私が考えることができる唯一のことは、おそらくページとユーザー コントロールに関連する ASP.NET ライフサイクルです。私がそれを理解する方法は、所有するページで Page_LoadComplete() が呼び出される前に、すべてのイベントがコントロールで処理されている必要があるということです。
考え?
tdd - メソッドが 1 回だけ呼び出されることをアサートする
メソッドが 1 回だけ呼び出されると主張したい。RhinoMocks 3.5 を使用しています。
これが私がうまくいくと思ったものです:
GetMeMyThing()
2 回目の呼び出しでこのテストが失敗するようにしますsource.GetSomethingThatTakesALotOfResources()
。
ruby - 統合テストでのファイルシステムのモック
いくつかの外部コマンドライン ユーティリティを実行する ruby プログラムを作成しています。ファイル階層を簡単にセットアップしてテスト後に検証できるように、rspec テストからファイルシステムをモックするにはどうすればよいでしょうか。また、テストが迅速に実行されるように、RAM に実装することも最適です。
外部ユーティリティはオペレーティング システムのファイル サービスと直接対話するネイティブ プログラムであるため、移植可能なソリューションが見つからない可能性があることを認識しています。Linux は私の主要なプラットフォームであり、そのためのソリューションで十分です。
asp.net - TDD を実行するときにテスト DB を作成するにはどうすればよいですか?
ASP.NET サイト (例: ASP.NET MVC サイト) を実行するときに、テスト永続化レイヤーを作成するためのベスト プラクティスは何ですか?
私が見た多くの例では、単体テスト プロジェクトで Moq (または別のモッキング フレームワーク) を使用していますが、永続化レイヤーを moq アウトして、Web サイトにデータなどを表示するようにしたいのですが、それはデータベースからのものではありません。それを最後にしたい。私が見たすべてのモックは、単体テストにしか存在しません。
迅速かつ迅速な開発のために永続化レイヤーを偽造 (スタブ?) したい場合、人々はどのようなプラクティスを実行しますか? 私はそれを処理するために Dependency Injection を使用し、永続化レイヤーにハードコードされた結果をいくつか持っています (これは本当に手作業で退屈です)。
他の人は何をしていますか?例とリンクは素晴らしいでしょう:)
アップデート
ちょっとした更新: これまでのところ、各クラスがインターフェイスを実装する偽のリポジトリと SQL リポジトリを使用することで、かなりの距離を稼いでいます。次に、DI (私は StructureMap を使用しています) を使用して、偽のリポジトリと SQL リポジトリを切り替えることができます。これまでのところ、うまく機能しています:)
(これを編集していたときから、ほぼ11か月前にこの質問をしたと思うと恐ろしいです!)
oop - コードのテスト容易性と OOP 原則の遵守のどちらがより重要ですか?
私のチームの TDD の進化には、従来の oop からの逸脱と思われるものが含まれています。
自己完結型のクラスからの脱却 現在も、必要に応じてデータをカプセル化しています。しかし、ヘルパークラスをモックするために、通常、コンストラクターまたはミューテーターを介して外部から設定する方法を作成します。
プライベート メソッドは使用しません。モッキング フレームワーク (RhinoMocks) を利用するために、メソッドを非公開にすることはできません。これは、従来の開発者に「売り込む」最大のものでした。そしてある程度、私は彼らの主張を理解しています。私はもっとテストすることを大切にしています。
あなたの考えは何ですか?
unit-testing - どこでモッキングを行いますか-直接の依存関係、または境界を拡大します...?
したがって、私は C# と .NET での単体テストとモックの両方についてかなりの初心者です。私はそれぞれ xUnit.net と Rhino Mocks を使用しています。私は改宗者であり、純粋な TDD ではなく、動作仕様の作成に専念していると思います。ああ、セマンティクス。本質的に、自動化されたセーフティネットが上記で機能することを望みます。
しかし、ある考えが私を襲った。私はインターフェイスに対してプログラミングを行いますが、依存関係を切り離すという利点はそこにあります。売却。ただし、私の動作検証スイート (別名ユニット テスト ;-)) では、一度に 1 つのインターフェイスの動作をアサートしています。のように、一度に 1 つのインターフェースの実装で、その依存関係がすべてモックアウトされ、期待値が設定されます。
このアプローチは、クラスが連携する依存関係に対して適切に動作することを検証し、さらに連携する依存関係のそれぞれに依存して同じ品質契約に署名することを検証する場合、私たちは成功しているようです。十分に合理的に思えます。
しかし、考えに戻ります。一緒に配線された具体的な実装のユニットに対してテストフィクスチャがアサートし、モックされた依存関係に対してその内部動作をテストしている半統合テストに価値はありますか? 読み直したところ、おそらくもっとうまく表現できたはずだと思います。明らかに、ある程度の「まあ、それがあなたにとって価値があるなら、それを続けてください」と思うでしょう-しかし、他の誰かがそれを行うことを考え、コストを上回る利益を得ましたか?
python - urllib のような 1 つのモック/スタブ Python モジュールを作成するにはどうすればよいですか?
urllib.urlopen (urllib.urlencode も使用) を使用して、外部サーバー上のページを照会する必要がある関数をテストする必要があります。サーバーがダウンしている可能性があり、ページが変更される可能性があります。私はテストのためにそれに頼ることはできません。
urllib.urlopen が返すものを制御する最良の方法は何ですか?
unit-testing - 単体テストにモッキング フレームワークが必要なのはなぜですか?
最近、.NET の世界では、さまざまなモッキング フレームワークがすべて誇大宣伝されています。私はまだ彼らの何が素晴らしいのかをよく理解していません。自分で必要なモッキング オブジェクトを作成するのはそれほど難しくないようです。特に Visual Studio の助けを借りて、モックしたいインターフェイスを実装するクラスをすばやく作成し (ほとんどすべてを自動生成してくれます)、テストに必要なメソッドの実装を作成できます。終わり!数行のコードを節約するためだけに、モッキング フレームワークを理解するという面倒な作業を行う必要はありません。それとも、モッキング フレームワークはコード行を節約するだけではないのでしょうか?