8

Google モックを使用して関数の引数を特定のオブジェクトに一致させる際に問題があります。

次のコードを検討してください。

class Foo
{
public:
    struct Bar
    {
        int foobar;
    }

    void myMethod(const Bar& bar);
}

これで、いくつかのテスト コードができました。次のようになります。

Foo::Bar bar;
EXPECT_CALL(fooMock, myMethod(Eq(bar));

したがって、Foo::myMethod が呼び出されたときに、引数がローカルでインスタンス化されたバー オブジェクトのように見えることを確認したいと思います。

このアプローチを試みると、次のようなエラー メッセージが表示されます。

gmock/gmock-matchers.h(738): error C2678: binary '==' : no operator found which takes a left-hand operand of type 'const Foo::Bar' (or there is no acceptable conversion)

Eq(ByRef(bar)) を使用して、演算子 == と != (少なくとも == は両方ともフリー関数のメンバーとして) を定義して遊んでみましたが、問題を解決できませんでした。役立つ唯一のものは使用することです

Field(&Foo::Bar::foobar, x) 

しかし、この方法では、多くの入力作業のように見える構造体のすべてのフィールドをチェックする必要があります...

4

1 に答える 1