2012-12-18 23 views
2

我正在使用谷歌模擬。該文件說,我們可以EXPECT_CALL或ON_CALL使用EXPECT_THAT,但像他這樣的代碼似乎並不編譯:在EXPECT_CALL中使用google mock的EXPECT_THAT?

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

我知道EXPECT_THAT是一個宏觀的,因此擴展到不應該出現在那裏的一些聲明。那麼「在EXPECT_CALL中使用EXPECT_THAT」是什麼意思?怎麼做?

感謝

回答

3

你誤解了documentation for matchers

一個匹配一個參數相匹配。你可以使用它裏面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); 
相關問題