4

私はグーグルモックを使用しています。ドキュメントには、EXPECT_CALL または ON_CALL で EXPECT_THAT を使用できると書かれていますが、次のようなコードはコンパイルできないようです。

EXPECT_CALL(obj, method(_, _)).Times(1).WillOnce(EXPECT_THAT(true, Eq(1)));

EXPECT_THAT はマクロであることを知っているので、そこに表示されるべきではないいくつかのステートメントに展開されます。では、「EXPECT_CALL で EXPECT_THAT を使用する」とはどういう意味ですか? どうやってするの?

ありがとう

4

1 に答える 1

6

あなたはマッチャーのドキュメントを誤解しています:

マッチャーは単一の引数に一致します。ON_CALL() または EXPECT_CALL() 内で使用するか、値を直接検証するために使用できます

次に、ドキュメントはマッチャーを使用して値を検証する方法の例を示します。

EXPECT_THAT(value, matcher)valueに一致することをアサートしmatcherます。

EXPECT_THATこれは、それ自体がマッチャーであると言っているわけではありません。したがって、あなたが試みていることはできませんが、次のようなことしかできません:

EXPECT_THAT(true, testing::Eq(1));

また

EXPECT_CALL(obj, method(testing::_, testing::Eq(1))).Times(1);
于 2012-12-18T15:12:31.570 に答える