問題タブ [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.

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

c# - ASP MVC アプリで Web コンテキストを「サービス」に渡す

Web の現在の http コンテキストをサービス クラスに渡す (またはそれへの参照を使用してクラスを初期化する) 方法を考え出そうとしています。これを行っているのは、アプリの残りの部分を、http コンテキストについて何も知る必要がないように抽象化するためです。

また、おそらく Mockable フレームワークの 1 つを使用して、TDD を使用してサービスをテストできるようにしたいと考えています。したがって、実際のクラスではなくインターフェイスを使用することをお勧めします。

私が達成したいことの例:

私が抱えている主な問題の 1 つは、IHttpContext がないことです。.net http コンテキストは、(簡単に?) モックできない抽象クラスのサブクラスです。

もう 1 つの問題は、クラスのグローバル インスタンスを初期化できないことです。これは、コンテキストがほとんどの要求に関連しないためです。

クラスを静的にし、コンテキストが呼び出されるたびに各関数に渡されるようにすることができます。

しかし、これによってクラスのテストが容易になるわけではありません。HttpContext を作成する必要があります。さらに、このクラスを使用したい非 Web 対応サービスは、突然 Context を取得できる必要があり、密接に結合する必要があります。 Web サーバーへ - そもそもこのクラスを作成したい理由のすべてです。

私はすべての提案にオープンです - 特に人々が簡単な tdd テストを容易にすることを知っている提案です。この問題にどのように取り組むことを人々は提案しますか?

乾杯

0 投票する
5 に答える
30054 参照

c# - インデックス付きプロパティを MOQ する方法

インデックス付きプロパティへの呼び出しをモックしようとしています。つまり、次をmoqしたいと思います:

また、セッター値

アプリが使用するクラスの機能をモックする必要があるため、これを行っています。

MOQでこれを行う方法を知っている人はいますか? 私は次のバリエーションを試しました:

しかし、それはコンパイルされません。

MOQで達成しようとしていることは可能ですか?これを行う方法の例はありますか?

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

.net - Rhino モック - 非仮想メソッドの結果の設定

私は Rhino モックをいじっていて、モック オブジェクトにダミーの結果を設定しようとしているので、ファクトリ メソッドで呼び出されたときにデータについて心配する必要はありません。

しかし、問題が発生しました。ダミーの結果を取得したいメソッドは、virtualではないため、例外を引き起こしています。

私はこのようなコードを持っています:

SomeMethodメソッドは、モックされた結果を得るために仮想である必要がありますか?

SetupResult.Forまた、との違いは何Expect.Callですか?

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

php - 静的メソッド呼び出しをエミュレートするためのPHPUnitのモックオブジェクト?

データベース内のデータアクセスを管理するクラスをテストしようとしています(基本的にはCRUDです)。私たちが使用しているDBライブラリには、静的呼び出しによって最初にテーブルオブジェクトを取得するAPIがあります。

...あなたはアイデアを得る。

このメソッドをテストしようとしていますが、DataObjectのものをモックして、(a)テストに実際のdb接続を必要とせず、(b)テストにDB_DataObjectlibを含める必要さえありません。 。

ただし、PHPUnitでは、静的呼び出しを適切に設定するために$ this-> getMock()を取得できないようです。私は持っています...

...しかし、テストはまだ未知の方法「工場」を示しています。以前はDB_DataObjectが見つからなかったため、オブジェクトを作成していることはわかっています。今ではできます。しかし、方法はありませんか?

私が本当にやりたいのは、2つのモックオブジェクトを用意することです。1つはテーブルオブジェクトにも返されます。したがって、ファクトリが静的呼び出しであることを指定する必要があるだけでなく、すでに設定した他の指定されたモックオブジェクトを返すことも指定する必要があります。

しばらく前にSimpleTestでこれを実行し(コードが見つかりません)、正常に機能したことを警告として言及する必要があります。

何が得られますか?

[アップデート]

私はそれがexpects()と関係があることを理解し始めています

0 投票する
14 に答える
240383 参照

unit-testing - 偽造、モック、スタブの違いは何ですか?

これらの用語の使い方は知っていますが、単体テストの偽造、モック、スタブの定義が受け入れられているかどうか疑問に思っますか?テスト用にこれらをどのように定義しますか?それぞれを使用する可能性のある状況を説明してください。

これが私がそれらを使用する方法です:

偽物:インターフェイスを実装するが、固定データを含み、ロジックを含まないクラス。実装に応じて、単に「良い」または「悪い」データを返します。

モック:インターフェースを実装し、特定のメソッドからスローする戻り値/例外を動的に設定する機能を可能にし、特定のメソッドが呼び出されたかどうかをチェックする機能を提供するクラス。

スタブ:モッククラスと似ていますが、メソッドが呼び出されたかどうかを確認する機能がない点が異なります。

モックとスタブは、手動で生成することも、モックフレームワークによって生成することもできます。偽のクラスは手作業で生成されます。私は主に、クラスと依存クラス間の相互作用を検証するためにモックを使用します。相互作用を検証し、コードを介して代替パスをテストしたら、スタブを使用します。私は主にデータの依存関係を抽象化するため、またはモック/スタブが毎回設定するのが面倒な場合に、偽のクラスを使用します。

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

c# - Moq を使用してメソッドが呼び出されたかどうかを判断する

より高いレベルのメソッドを呼び出すと、メソッド呼び出しが発生することをテストできると理解しています。つまり、

私が呼び出すとSomeMethod()、それが呼び出されることを期待してテストしたいと思いSomeOtherMethod()ます。

この種のテストがモック フレームワークで利用できると考えるのは正しいですか?

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

unit-testing - クラスまたはインターフェースのMoq化の違いは何ですか?

私は単体テストでmoqを使用してオブジェクトをモックしてきましたが、moq に関するサイトで、クラスとインターフェイスの両方をモックできることを見てきました。

先日、同僚の 1 人と話し合ったところ、クラスをモックする理由はなく、インターフェイスのみをモックする必要があるとのことでした。

私はそれに対する答えを本当に持っていませんでした....そして、moqサイトでも答えが見つからないようです。

クラスを決してモックしてはいけないというのは本当ですか? それが本当なら、Moqはそれを許可しないので、私はノーと言います....それでは、インターフェースを介してクラスをモックする方が良い時がありますか? クラスのモックとインターフェイスのモックの違いは何ですか? それとも本当に単なる好みの問題ですか?

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

python - 極度の怠惰にもかかわらず、Python で IMAP サーバーをモックするにはどうすればよいですか?

多くの作業を行わずimaplibに、Python でIMAP サーバー (モジュールのようなもの) をモックする簡単な方法があるかどうか知りたいです。

既存のソリューションはありますか? 理想的には、既存の IMAP サーバーに接続し、ダンプを行い、実際のメールボックス/電子メール構造から模擬サーバーを実行することができます。

怠惰の背景: 私が書いているこの小さなスクリプトが時間の経過とともに大きくなるという嫌な予感があり、適切なテスト環境を作成したいと考えていますが、時間の経過とともに大きくならない可能性があることを考える、そうしたくありません。モック サーバーを実行するには多くの作業が必要です。

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

java - JMockit で、モックされたメソッドから元のメソッドを呼び出す方法はありますか?

私のモッククラスでは、メソッド foo() をモックしています。一部のテスト ケースでは、foo() のモック実装が特別な値を返すようにします。他のテスト ケースでは、foo() の実際の実装を使用したいと考えています。モッククラスでブール値を定義して、特別な値を返すか、「実際の」メソッドを使用するかをモックメソッドで決定できるようにします。問題は、モックされたメソッドから実際のメソッドを呼び出す方法がわからないことです。

「it」という名前のモックオブジェクト内に特別なメンバーを定義できることがわかりました(オブジェクトのタイプがモックされています)。これにより、モック実装から実際のクラスを参照できます。したがって、私の計画では、foo() の「実際の」実装を呼び出す必要がある場合は、モック メソッドで it.foo() を呼び出すというものでした。ただし、 it.foo() を呼び出すと、実際のバージョンではなくモックバージョンが再度呼び出されるため、これは機能しません。そのため、無限再帰が発生します。

これを機能させる方法はありますか?

編集:コード例でより明確になる可能性があります。現在のモックされたメソッドの実装は次のようになります。

編集 2: また、ほとんどのテスト ケースでは、モックの実装は必要ありません。したがって、これに対する私の最初の試みは、モック オブジェクトが必要なテスト ケース内でのみ Mockit.redefineMethods() を呼び出すことでした。しかし、これはうまくいきませんでした-セットアップ/ティアダウン内でのみこれを行うことができるようです...私がそれを試したときに、私のモック実装は決して呼び出されませんでした.

解決策に関する注意事項:

最初は、与えられた答えがうまくいくとは思いませんでしたが、もう少し試してみると、JMockit の「コア」メソッドと「注釈」駆動のメソッドを混在させていたことが問題のようです。どうやら注釈を使用するときは、Mockit.redefineMethods() ではなく、Mockit.setupMocks を使用する必要があります。これが最終的に機能したものです:

次に、モック クラスの場合:

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

unit-testing - It.Is で ExpectSet() を使用した Moq テスト() は期待どおりに動作していません...

この動作を次のテスト ケースに分離しました。プロパティに設定されたプロパティを期待/検証する方法を教えてくれる人に感謝します-現在、私にはあまり意味をなさないList<T>内部で何かが起こっているようです. It.Is<T>(predicate)サンプル コードは VS2008 からコンソール アプリとして実行されます - Moq 2.6 への参照を追加する必要があります (私は 2.6.1014.1 を使用しています) - 何が起こっているかを確認するには、さまざまな ExpectSet ステートメントのコメントを外してみてください...