当前位置: 首页 > news >正文

在哪个网站上可以学做衣服wordpress菜单函数

在哪个网站上可以学做衣服,wordpress菜单函数,石家庄最好的网站建设公司排名,班级网站 模板引言 前文我们已经讲解了gmock的基本语法#xff0c;但是gmock只能mock虚函数#xff0c;如果要mock非虚成员函数、静态成员函数、全局函数、重载函数、模板函数以及其他依赖库的函数时#xff0c;gmock就很难实现。而cppmockfree可以支持这些函数的mock。 快速入门 1. m…引言 前文我们已经讲解了gmock的基本语法但是gmock只能mock虚函数如果要mock非虚成员函数、静态成员函数、全局函数、重载函数、模板函数以及其他依赖库的函数时gmock就很难实现。而cppmockfree可以支持这些函数的mock。 快速入门 1. mock样例 1.1 全局函数 // gloabal function int g_func(int a, int b) {return a b; }#include gtest/gtest.h #include gmock/gmock.h #include cpp_free_mock.h #include stringusing namespace ::testing; using namespace ::CppFreeMock;namespace { TEST(TestCppMockFree, CaseGlobalFunction) {auto mock MOCKER(g_func);EXPECT_CALL(*mock, MOCK_FUNCTION(_, _)).WillOnce(Return(1)).WillRepeatedly(Return(2));EXPECT_EQ(1, g_func(1, 2));EXPECT_EQ(2, g_func(12, 2));mock-RestoreToReal();EXPECT_EQ(14, g_func(12, 2)); }1.2 成员函数 class Adder { public:int add(int a, int b) const{return a b;} };TEST(TestCppMockFree, CaseStaticMemberFunction) {auto mock MOCKER(Adder::add);// 针对类的成员函数要注意占位符会多出一个即第一个为this指针// 而全局函数或者静态成员函数占位符个数等于实际参数个数EXPECT_CALL(*mock, MOCK_FUNCTION(_, _, _)).WillRepeatedly(Return(2));Adder adder;EXPECT_EQ(2, adder.add(1, 2));EXPECT_EQ(2, adder.add(12, 2));mock-RestoreToReal();EXPECT_EQ(14, g_func(12, 2)); }1.3 静态成员函数 // static member function class Printer { public:static std::string print(const std::string str){return str;} };TEST(TestCppMockFree, CaseStaticMemberFunction) {auto mock MOCKER(Printer::print);EXPECT_CALL(*mock, MOCK_FUNCTION(_)).WillRepeatedly(Return(std::string(mocker)));EXPECT_STREQ(mocker, Printer::print(hello).c_str());mock-RestoreToReal();EXPECT_STREQ(hello, Printer::print(hello).c_str()); }1.4 函数重载 // overload function class OverloadFunc { public:int foo() { return 0; }int foo(int a) { return a;} };TEST(TestCppMockFree, CaseOverloadFunction) {OverloadFunc overload_func;typedef int (OverloadFunc::*FuncType0)();typedef int (OverloadFunc::*FuncType1)(int);auto mock0 MOCKER((FuncType0)OverloadFunc::foo);EXPECT_CALL(*mock0, MOCK_FUNCTION(_)).WillRepeatedly(Return(2));EXPECT_EQ(2, overload_func.foo());auto mock1 MOCKER((FuncType1)OverloadFunc::foo);EXPECT_CALL(*mock1, MOCK_FUNCTION(_, _)).WillRepeatedly(Return(2));EXPECT_EQ(2, overload_func.foo(1));mock0-RestoreToReal();mock1-RestoreToReal();EXPECT_EQ(2, overload_func.foo(1));mock0-RestoreToReal();mock1-RestoreToReal();EXPECT_EQ(0, overload_func.foo());EXPECT_EQ(1, overload_func.foo(1)); }1.5 模板类成员函数 // template class template class T class AdderT { public:T add(T a, T b) { return a b; }T add(T a, T b, T c) { return a b c; }T adder(T a) { return a; } };TEST(TestCppMockFree, CaseTemplateFunction) {AdderTint adder;// overload functiontypedef int (AdderTint::*FuncType0)(int, int);auto mock0 MOCKER((FuncType0)AdderTint::add);EXPECT_CALL(*mock0, MOCK_FUNCTION(_, _, _)).WillRepeatedly(Return(1));EXPECT_EQ(1, adder.add(1, 2));auto mock1 MOCKER((FuncType1)AdderTint::add);EXPECT_CALL(*mock1, MOCK_FUNCTION(_, _, _, _)).WillRepeatedly(Return(1));EXPECT_EQ(1, adder.add(1, 2));auto mock1 MOCKER((FuncType1)AdderTint::add);EXPECT_CALL(*mock1, MOCK_FUNCTION(_, _, _, _)).WillRepeatedly(Return(1));EXPECT_EQ(1, adder.add(1, 2, 3));mock0-RestoreToReal();mock1-RestoreToReal();EXPECT_EQ(3, adder.add(1, 2));EXPECT_EQ(6, adder.add(1, 2, 3));// normal functionauto mock2 MOCKER(AdderTint::adder);EXPECT_CALL(*mock2, MOCK_FUNCTION(_, _)).WillRepeatedly(Return(1));EXPECT_EQ(1, adder.adder(2));mock2-RestoreToReal();EXPECT_EQ(2, adder.adder(2)); }1.6 外部库函数 TEST(TestCppMockFree, CaseOtherLibrary) {auto mock MOCKER(std::atoi);EXPECT_CALL(*mock, MOCK_FUNCTION(_)).WillRepeatedly(Return(22867));EXPECT_EQ(22867, std::atoi(123));mock-RestoreToReal();EXPECT_EQ(123, std::atoi(123)); } 2. 引入cppmockfree git clone https://github.com/gzc9047/CppFreeMock.git注意在引入cppmockfree之前请务必引入gtest和gmock。如何引入在我之前的文章中均有提及。 3. makefile CXX g CXXFLAGS -Wall LIBES -lgtest -lgtest_main -lpthread LPATH -L/tools/googletest/1.11.0/build/lib # 替换成自己lib路径 HPATH -I/tools/googletest/1.11.0/googletest/include/ # 替换成自己的include路径 HPATH -I/xxx/cpp_freemock/ #替换成自己的include路径UTEST_OBJD hello_unit_testhello_unit_test:hello_unit_test.cpp${CXX} -o $ $ -I ../ ${HPATH} ${CXXFLAGS} ${LIBES} ${LPATH}clean:rm -rf *_unit_test总结 CPPMockFree能够支持几乎所有场景下的接口mockEXPECT_CALL的使用和gmock基本一致更多的接口如SaveArg、SetArgReferee等请参考gmock文档
http://www.w-s-a.com/news/91609/

相关文章:

  • 权威的唐山网站建设扁平网站欣赏
  • 网站外链建设工作计划应用公园app免费制作
  • 东莞营销型网站建设全自动建站系统
  • 网络在线培训网站建设方案虚拟主机配置WordPress
  • 建设工程信息查询哪个网站好台州做优化
  • wordpress页面回收站位置台州做网站
  • 邢台市行政区划图seo咨询师招聘
  • 外贸网站建设案例网站建设优化开发公司排名
  • 恩施网站优化郑州有没有厉害的seo
  • 电子商务网站建设与管理期末考试题铜山区建设局网站
  • 怎么做非法彩票网站大兴安岭网站建设公司
  • 网站备案授权书模板海外如何淘宝网站建设
  • 网站开发提供源代码dedecms做网站教程
  • 怎么做国际网站首页erp系统一套大概多少钱
  • 做代理网站用什么软件建设网站的企业多少钱
  • 微企免费做网站360收录提交
  • 网站导航页怎么做wordpress数据库批量替换
  • wordpress站点更换域名自己做wordpress 模版
  • 怎么做虚拟的网站东莞常平邮编是多少
  • 电子商务网站和普通网站的区别正规网站建设多少费用
  • 郴州免费招聘网站前端好还是后端好
  • 织梦网站怎样做子域名20个中国风网站设计欣赏
  • wordpress网站搬简约创意logo图片大全
  • 叙述网站制作的流程石家庄58同城最新招聘信息
  • 南昌微信网站建设东莞网站优化软件
  • 爱站数据官网纯静态网站挂马
  • 网站建设公司未来方向3d设计网站
  • 建设部网站 干部学院 一级注册建筑师培训 2014年做网站开发的提成多少钱
  • 网上请人做软件的网站铝合金型材外发加工网
  • 手机网站建设万网山东省作风建设网站