1

11 個のパラメーターを持つ関数をモックすると、エラー メッセージが表示されます。

エラー: 'function_name' は型ではありません

私は使っている

MOCK_METHOD11(function_name,int(param1,param2,....,param11);

11個のパラメータを持つ関数はモックできないということですか?

4

1 に答える 1

2

GMock は、モック関数に対して最大 10 個 (含む) のパラメーターをサポートします。そのため、そのままでは機能に使用できません。このメソッドをモックするためにできること:

  1. (推奨) このメソッドをリファクタリングして、パラメーターの数を減らします。パラメータが多すぎると、メソッドの制御と理解が難しくなります。

  2. 10 個のパラメーターのみを受け入れる同様のメソッドを持つ中間プロキシ インターフェイスを導入します。それは簡単に達成できます:

    class OriginalInterface
    {
    public:
        virtual void method(int param1, int param2) = 0;
    };
    
    class ProxyInterface : public OriginalInterface
    {
    public:
        virtual void method(int param1, int param2)
        {
            method1(param1);
            method2(param2);
        }
        virtual void method1(int param1) = 0;
        virtual void method2(int param2) = 0;
    };
    
    // Now you mock on ProxyInterface
    class MockInterface : public ProxyInterface
    {
    public:
        MOCK_METHOD1(method1, void(int));
        MOCK_METHOD1(method2, void(int));
    };
    

私の例では、2 つのパラメーターを持つメソッドを 2 つのメソッドに分割しています。その考えは明確だと思います。

3. (最適ではありません) gmock ソースを変更して、METHOD11 typedef を追加してみてください。

于 2012-09-22T13:09:43.797 に答える