-2
Catクラスがあるとします。パラメータのエネルギーに応じて、show_cat
関数が呼び出されます。正しいメソッドが同じクラスのメソッドによって呼び出されたかどうかをテストする方法C++ gmock
class Cat{
public:
int energy;
virtual void show_cat()
{
if(energy < 10)
{
show_tired_cat();
}
else
{
show_energized_cat();
}
}
virtual void show_tired_cat(){}
virtual void show_energized_cat(){}
};
右ショー機能がgmockを使用して呼び出された場合にどのようにテストすることができますか?次
はもちろん間違っている、しかし、あなたがと遊ぶことができる構造を与えるためにそこにある:あなたが、そうなぜあなたがダウンして質問を投票した場合
#include<gmock/gmock.h>
#include<gtest/gtest.h>
class MockCat: public Cat
{
public:
MOCK_METHOD0(show_tired_cat,void());
MOCK_METHOD0(show_energized_cat,void());
};
TEST (catTest, show_cat){
//This is of course not working
Cat realCat;
realCat.energy = 3;
realCat.show_cat();
MockCat fakeCat;
EXPECT_CALL(fakeCat,show_tired_cat()).Times(1);
EXPECT_CALL(fakeCat,show_energized_cat()).Times(0);
}
int main(int argc, char *argv[])
{
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
、その後、コメントしてください、私はできるように改善する。
期待を設定した後に 'fake.show_cat()'を呼び出さないでください。 – user0042
また、 'realCat'の' show_tired_cat'メソッドを呼び出す 'realCat'の' show_catメソッド 'を再度呼び出すため、期待値を設定した後に' fakeCat.show_cat(); 'を呼び出しても何も変更されません。 – newandlost