問題タブ [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.
unit-testing - gmock を使用してこのクラスをモックし、そのインスタンスを他のクラスのクラス メンバーとして使用する方法
私は の新規ユーザーgmock
です。gmock
このクラスを他のクラスのクラスメンバーとしてインスタンス化するために使用する方法がわかりません。コードは次のようになります。
今、私はgmock
モックにB
使用mockB
してから、A
の UnitTest で使用したいと考えています。やり方を教えてください。ありがとう!
c++ - Google モックを使用して C++ で継承チェーンをモックする方法
私はGoogleモックを使用しており、次のような継承チェーンをモックしたいと考えています:
A をモックするときは、A1(); をモックする必要があります。B をモックするときは、A1() と B1() の両方をモックする必要があります。C をモックするときは、C1()、B1()、A1() をモックする必要があります。
ただし、クラス C については、新しい拡張関数 C1() だけを気にします。特に定義されているメソッドが多すぎる場合は、すべての親メソッドをモックしたくありませんでした。しかし、親から継承されたすべてのメソッドをモックしないと、mockC クラスをインスタンス化できません。
1 つの方法は、mockC が C と mockB の両方から継承することを要求することですが、C と mockB の両方が B から純粋に継承する必要があります。ただし、C->B->A 継承チェーンは変更できないサードパーティ コードで定義されています。
この問題を解決する良い方法はありますか?
cmake - 外部ソース ディレクトリを CMake ビルドに追加する
私は自分のプロジェクトに Google Mock を使用していますが、さまざまなコンパイラ フラグがバグを引き起こす可能性があるため、プロジェクトと共にライブラリをビルドすることをお勧めします。gmock/ ディレクトリをリポジトリに追加したくありません。ソースを外部依存関係として保持し、それをビルド プロセスにプラグインしたいと考えています。これが私の質問につながります.CMakeに外部ソースディレクトリをビルドにプルするように指示するにはどうすればよいですか(つまり、プロジェクトのビルドディレクトリにビルドします)? ここで同様の質問を見つけましたが、回答には厳密なディレクトリ配置が必要であり、それを構成可能にしたいと考えています。それを行う他の方法はありますか?
c++ - 右辺値参照をサポートするための gmock の回避策
gmock は、モック関数のパラメーターとしての右辺値参照をサポートしていません (課題レポート)。
たとえば、次のコードはコンパイルされません。
gmock がこれにいつサポートを追加するかについての情報が見つかりません。
grails - Grails2.0エラーでのモックテスト
最近、Grails1.3.7プロジェクトをGrails2.0.4にアップグレードしましたが、モックを使用した単体テストの多くが失敗し始めていることに気付きました。コントローラのテストは問題なく合格しているようです。問題は、サービスが相互にコラボレーションしていて、コラボレーターへの呼び出しをモックアウトしようとしたときに発生します。奇妙なことに、単一のテストを実行すると合格しますが、スイート全体を実行するとすぐに失敗し、エラーが発生します。
新しいMockFor()の代わりにGMockを使用しようとしましたが、これと非常によく似たエラーが発生します。
これは、私が得ているエラーを複製する方法を示す不自然な例と、https://github.com/punkisdead/FunWithMocksにあるGitHubのサンプルプロジェクト全体です。これを機能させる方法について何かアイデアはありますか?
BarController:
BarService:
BarControllerTests:
BarServiceTests:パッケージfunwithmocks
c++ - GMOCK エラー: MOCK_METHOD11 は許可されていません
11 個のパラメーターを持つ関数をモックすると、エラー メッセージが表示されます。
エラー: 'function_name' は型ではありません
私は使っている
11個のパラメータを持つ関数はモックできないということですか?
c++ - クラスのない関数をモックする方法は?
クラスメンバーではない無料の関数をモックしたい。
.h
で定義された で宣言されています.cpp
。
この関数をモックするにはどうすればよいですか?
unit-testing - gmock 単体テスト
この状況を考慮してください
クラス B をテストする必要があるため、モック化された Method1 を使用して実際の Method1 を置き換えますが、クラス B のコードは変更しません。クラス B の変数 a はポインタでも参照でもないため、この問題を解決する方法やウォークアラウンドはありますか。
c++ - GMock EXPECT_CALL を設定して、モック関数に対して 2 つの異なる関数を呼び出す方法
「テストスイート」のテスト済み関数でモック関数が呼び出されたときに、2 つの異なる関数を呼び出す方法は?
詳細: モック関数がテスト済み関数で 2 回呼び出されています。最初に呼び出されたときに 1 つの関数 (テスト スイート内のローカル関数) を呼び出し、2 回目に呼び出されたときに別の関数 (テスト スイート内の別のローカル関数) を呼び出す必要があります。
では、上記の要件に対して「Invoke」で EXPECT_Call を設定するにはどうすればよいでしょうか。
c++ - GTest/GMock を使用した非仮想関数のモックのエラー
GTest を使用してコードの UT を記述しています。
「非仮想」関数をテストするために、「nm」ユーティリティを使用して「関数マングル名」を生成し、以下の形式で「test suite.cpp」ファイル (extern「C」の下) に追加しました。
__wrap_Mangled_name (元の関数の引数)
そして、「tst_def」ファイルで同じものをリンクしました。それでもテスト スイートを実行すると、この「ラップされた関数」ではなく、ソース コード内の元の関数が呼び出されます。しかし実際には、このラップされた関数を呼び出す必要があります。
「C++filt」ユーティリティを使用して、このマングルされた名前が正しいかどうかをクロスチェックしたところ、正しいものでした。
これに関する提案はありますか?
ありがとう、
ウダイ