GoogleTest中的Mock用法

通常在团队开发过程中,业务逻辑会有上下游依赖,你所负责的部分可能会依赖其他团队成员提供的接口功能,在其他成员还没有提供可用的接口之前,你的开发工作可能会因为缺乏必要接口被阻塞,此时需要对这些尚未实现的接口进行模拟(Mock),以便你本地的工作能够正常推进。

一个典型的Gmock用法如博文:Gtest/Gmock探究(三)-- MOCK_METHODX系列宏分析_mock method-CSDN博客所示,首先创建一个抽象接口类,然后派生一个子类Mock该接口类的的纯虚接口,最后开始基于该子类进行单元测试。除此之外,还可以用googletest提供的预置模板类NiceMock<T>进行特定接口mock,而不必为所有的接口做Mock实现。比如,只想mock一下读取数据的函数,可以不用继承那个抽象接口类,直接进行Mock:

#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <string>
using namespace std;

class Mock_OpenFile_Operator
{
	public:
		MOCK_METHOD1(ReadRawData, std::string& (const char*));
};


class FileDataLoad
{
	public:
		FileDataLoad() = default;
		template <class T>//等到你同事提供了真接口实现时,将此处模板去掉,改用真接口类即可
		void FileDataRead(testing::NiceMock<T>* Op, const char* path)
		{
			string& data = Op->ReadRawData(path);
			std::cout << "file content: " << data << std::endl;
		}

};

int main(int argc, char* argv[])
{
	testing::NiceMock<Mock_OpenFile_Operator> FileReader;
	string content = "test data.";
	EXPECT_CALL(FileReader, ReadRawData(::testing::_))
				.WillOnce(testing::ReturnRef(content));
	FileDataLoad loader;
	loader.FileDataRead(&FileReader, "dummmpy/path/to/file");
    return 0;
}

 

 

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值