問題タブ [gmock]

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

c++ - モック関数に渡された引数でメンバー関数を呼び出す最も簡単な方法は何ですか?

与えられたインターフェース

そしてグールモックモック

Fooable()モックされたメソッドの引数を呼び出すアクションを指定する最も簡単な方法は何Foo()ですか?

私が試してみました

しかし、これはコンパイルされません。これはInvoke()、引数が 1 つの場合、メンバー関数ではなく、自由な関数が必要になるためです。

を使用boost::bindするとおそらくうまくいくはずですが、必ずしもコードが読みやすくなるとは限りません。custom を書く前にAction、完全に明らかな何かを見逃していないかどうかを確認したかったのです。

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

java - SpringでGMockを使用して、いくつかのテストでSpringコンテキストを1回だけ設定するにはどうすればよいですか?

インメモリデータベースを使用して複数のgmockテストを実行すると、テーブルがすでに存在するというエラーが発生することがわかりました。すべてのテストメソッドで使用されるフィールドとして特定のテストクラスで1回だけ設定されているにもかかわらず、Springコンテキストの作成を複数回実行しているようです。

理想的には、複数のクラスで同じコンテキストを再利用したいのですが、単一のGMockTestCaseを持つ複数のメソッドでさえSpringコンテキストを再作成しています。

Junitのセットアップ方法をオーバーライドしても効果はありません。

この動作は直感的ではなく正しくないと思いますが、 gmockまたはgroovyがどのように機能するかについて理解できないことがあるかもしれません。

今のところ使用できる回避策の1つですが、理想的ではありませんが、注釈付きの手法を使用して、次のようなスプリングテストクラスを拡張することです。

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

c++ - 引数を変更する関数オブジェクトを作成するにはどうすればよいですか?

SomeFunctionandSetArgを のより一般的なものに置き換えたいと思いboostます。bindと組み合わせて何かできそうですがlambda、方法がわかりません。

このコードは非常に単純ですが、これを置き換えたい理由は、 for23etc の引数が必要だからです。

要求事項:

  • 関数オブジェクトを返す関数が必要です。
  • この関数オブジェクトを呼び出すと、パラメーターは参照によって渡されます。
  • この関数は、事前に設定された値に設定することにより、参照によって渡されたオブジェクトを変更します。
  • 上記のコードでは、事前設定された値が で値によって渡されますctorが、他の方法でも問題ありません。

次のコードは、使用方法を示しています。

いくつかのコンテキスト:

クラス のクライアント コードをテストしたいFoofunc1そのため、 の実装を自分のものに置き換えたいと思いますが、柔軟な方法で行います。

Invoke は、関数または関数オブジェクトを取ります。itの新しい実装内でfunc1は、 によって返された関数オブジェクトが呼び出されSetArg、その引数が string に設定されます"hello"

Invoke は gmock/gtest の一部ですが、そうでSetArgはありません。

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

c++ - 単体テスト中に基本クラスのオーバーライドされていない仮想/非仮想メソッドをモックするにはどうすればよいですか?

基本クラスでオーバーライドされていない非仮想/仮想メソッドをモックし、派生クラスのメソッドだけをテストするにはどうすればよいですか? ここでのケースは次のとおりです。外部サーバーに接続し、他のいくつかのことを行うメソッドを持つ基本クラス X があります。X から派生したクラス Y があります。Y に 2 つのメソッドを実装しました。単体テストを行いたいだけです。これらの 2 つのメソッドだけが心配であり、サーバーなどに接続するために基本クラスの実装が呼び出されることは望ましくありません (これらのメソッドをモックアウトしたいのですが、派生クラスでこれらのメソッドをオーバーライドしたくありません)。 Y であり、製品コードであるため、何もしません)。これらのメソッドを単独で単体テストする方法についての考え/アイデアはありますか?

PS: 開発と単体テストに C++/GTest を使用しています。

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

gmock - gmock でカスタム ref 変数を設定する方法

プロジェクトで gmock を使用していますが、モック関数のカスタム参照変数を設定する際に問題が発生しました。次のようなクラスがあるとします。

XXXClient::QueryXXX を使用するクライアント クラス XXXRunner::DoSomething があり、XXXClient::DoSomething をテストするために XXXClient をモックしたいと考えています。

QueryXXX の 2 番目のパラメータ、つまり「Response」が戻り値ではなく、XXXClient::QueryXXX の Response にデータを入力する参照変数であるという問題が発生します。Response にカスタム データを設定して、XXXRunner::DoSomething のさまざまな条件を検証したいと考えています。

gmock フレームワークは期待される戻り値を設定できますが、「戻り変数」を設定する方法が見つかりませんか?

では、どうすればよいのでしょうか?

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

c++ - program_options::variables_map をパラメーターとして持つ関数で EXPECT_CALL を初期化するときのコンパイラ エラー

これを行おうとすると、EXPECT_CALL メソッドに問題があります。

MyMethod は次のようになります。

コンパイル時にエラーが発生しました:

そして、さらにいくつかの同様のエラー。

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

c++ - Googleモックヘルプが必要です、

2つのクラスがあります。

SomeClassのモッククラスを作成しました。

ここで、単体テストで、AnotherClass.AnotherFunctionを呼び出すと、自分で選択した結果が得られるようにします。AnotherFunctionは、SomeClass.SomeFunction()の関数を使用します。私はSomeClassを嘲笑しました。そして、モックオブジェクトの関数がそれを呼び出すと10を返すように設定しました。しかし、単体テストを実行すると、5(元の関数)が返されます。私は何をすべきか。以下は私が書いた単体テストです。

VisualStudio2008とgmock1.6.0を使用しています。私がしているのは何が悪いのか。realClass.AnotherFunctionでmock.SomeFunction()からのモック出力が必要です。

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

groovy - GMock を使用した複数の静的メソッドを持つ部分的なモッキング クラス

GMock を使用して、既存の Java プロジェクトに単体テストを追加しています。テストする必要があるメソッドが静的メソッドである複数の場所があり、テストしたいメソッド内で追加の静的メソッドを利用します。

クラスを部分的にモックできるようにしたいと思います。テスト用の最初のエントリ ポイント以外のクラスのほぼすべての静的メソッドです。

例えば:

2 番目の静的メソッドをモックできることを願っていますが、そうするとすぐに method(String) が MIA になり、テストの実行が期待例外で失敗します。クラスを部分的にモックして、最初のメソッドの機能を維持しながら、2 番目のメソッドの静的アクセスをモックする方法はありますか?

また、metaClass プログラミングを使用してメソッドをモックしようとしましたが、メソッドをクロージャーに等しく設定すると、最初のメソッドが再び MIA になります。オーバーロードされたメソッドでこれを行う方法がわかりません。何か案は?

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

gmock - あなたが言及したgmockを解決するために何をしましたか(リンクを同封)?

MacでGoogleテストを構築する際のリンクエラー(コマンドライン)

一番下に、同じコンピューター上で複数のgmockインストールを見つけることについての編集を書き、コンパイラーのインクルードパスを台無しにして、正しいバージョンではなく古い1.532ビットバージョンをヒットさせました。

私はbrewを介して私のものをインストールしました。brew install gmock、そしてそれはすべてうまくいきました-しかし私はあなたがしたのと同じ問題を抱えています。あなたがあなたの投稿で述べたようにそれを正しくコンパイルする方法を教えていただければ、私はあなたにいくつかの賛成票を与えるのに十分喜んでいます、またはあなたはただリンクを編集することができます、そして私はそれを読みます(あなたがただし)。

googlemock googleコードページの説明と、それに対して構築するためにダウンロードしたものを読みました。私はたくさん検索しましたが、あなたが話していることに近いものは見つかりません。

私がしていることをあなたに説明するために、私は非常に簡単なテストを書きました:http: //codepad.org/zxBugY0w

そして、ローカルに含まれている情報を使用してコンパイルしようとすると、次のようになります。http: //pastebin.com/fqEZ6zTq

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

c++ - QTestLib 単体テスト フレームワーク + Gmock (QTCPServer の作成 - モック オブジェクト)

Qt の QTestLib 単体テスト フレームワーク + GMOck を使用しています。

単体テストで QTcpSocket から VerifySendData() メソッドへのデータを単純に受信するために、gMock を使用してモック サーバーをセットアップしようとしています。

誰かがモックオブジェクトgMOCKを作成する方法の例を教えてくれたら(EXPECT CALL、モックオブジェクトを作成する)