1

"with" 部分のパラメーターの 1 つとしてクラス インスタンスまたは構造体インスタンスを使用して、expect 呼び出しを設定するにはどうすればよいですか? ドキュメントには、その方法が示されていないようです。文字列や整数などの単純な引数を使用していますが、クラス インスタンスは使用していません。通常、そのパラメーターを「_」として設定するだけで完了しますか?

4

2 に答える 2

0

ダスカンディはすでにそれを説明しました。

解決策は、たとえば上記の例のように、独自の比較実装を提供することです。

inline bool operator==(const MyStruct& lhs, const MyStruct& rhs)
{
    if ((lhs.a == rhs.a) && (lhs.b == rhs.b))
    {
        return true;
    }
    return false;
}

これにより、コンパイラがシャットダウンし、テストが期待どおりに機能します。

TEST(check_CanCompareStructArguments)
{
    MockRepository mocks;

    IStruct* is = mocks.Mock<IStruct>();
    MyStruct ms;
    ms.a = 5;
    ms.b = 7;

    mocks.ExpectCall(is, IStruct::A).With(ms);

    is->A(ms);
}
于 2016-08-04T13:18:09.920 に答える
0

同等のインスタンスの場合、インスタンスを渡してそれを使用できます。

比較できないインスタンスの場合、引数が .With に入力したものと一致するかどうかを判断できないため、コンパイルされません。Hippomocks が呼び出しが一致するかどうかを判断できるようにするには、どうにかしてそれらを比較できるようにする必要があります。

于 2015-03-26T09:52:09.523 に答える