模拟对象未传递给其他类

时间:2018-12-27 12:41:34

标签: c++ googletest googlemock gmock

我正在制作istream的模拟类来测试一个类。但是模拟对象没有传递给我想在其中使用的实际类。

这是模拟类。

class MockStream{
 private:
std::string filename_;

public:
MockStream(){


}
MockStream(std::string filename, std::ios_base::openmode mode = std::ios_base::in | std::ios_base::out):filename_(filename){

}
MockStream(const MockStream &a){}
MockStream& operator=(const MockStream& a){
  return *this;
}
~MockStream(){}
MOCK_CONST_METHOD0(is_open,bool());
MOCK_METHOD0(close,void());
MOCK_METHOD2(read,MockStream&(char*,std::streamsize));
MOCK_METHOD2(write,MockStream&(const char*,std::streamsize));
MOCK_METHOD2(seekg,MockStream&(std::streamoff,std::ios_base::seekdir));
MOCK_METHOD1(seekg,MockStream&(std::streampos));
MOCK_METHOD0(get_filename,std::string());



};

测试:

TEST(random_access_stack, mocked_test)
{
RandomAccessStack<TestClass,u_int64_t,MockStream>              stack;
MockStream  mocked; 


EXPECT_CALL(mocked,is_open()).Times(1).WillOnce(testing::Return(true));

stack.SetStream(mocked); 
EXPECT_TRUE(stack.is_open());


}

SetStream函数:

void SetStream(STREAM& handle){
file_handle_ = handle;
}

其中file_handle_是模板传递的MockStream类型

输出为:

GMOCK WARNING:
Uninteresting mock function call - returning default value.
    Function call: is_open()
          Returns: false
NOTE: You can safely ignore the above warning unless this call should not happen.  Do not suppress it by blindly adding an EXPECT_CALL() if you don't mean to enforce the call.  See https://github.com/google/googletest/blob/master/googlemock/docs/CookBook.md#knowing-when-to-expect for details.
/build/libs/storage/tests/gtest/random_access_stack_tests.cpp:79: Failure
Value of: stack.is_open()
  Actual: false
Expected: true
/build/libs/storage/tests/gtest/random_access_stack_tests.cpp:73: Failure
Actual function call count doesn't match EXPECT_CALL(mocked, is_open())...
         Expected: to be called once
           Actual: never called - unsatisfied and active

0 个答案:

没有答案