问题标签 [gmock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4513 浏览

unit-testing - 如何使用 gmock 模拟这个类,它的实例作为其他类中的类成员

我是新用户gmock。我不知道如何使用gmock这个类来模拟它的实例作为其他类中的类成员。代码如下所示:

现在,我想用来gmock模拟B,然后mockBAUnitTest 中使用。你能告诉我怎么做吗?谢谢!

0 投票
1 回答
4395 浏览

c++ - 如何使用 google mock 在 C++ 中模拟继承链

我正在使用谷歌模拟,并想模拟这样的继承链:

模拟 A 时,我需要模拟 A1(); 模拟 B 时,我必须同时模拟 A1() 和 B1();当模拟 C 时,我必须模拟 C1()、B1() 和 A1()。

但是,对于 C 类,我只关心新的扩展函数 C1()。我不想模拟它的所有父方法,尤其是当定义的方法太多时。但是,如果我没有模拟从其父类继承的所有方法,我将无法实例化 mockC 类。

一种方法是要求mockC从C和mockB继承,但是它要求C和mockB都从B纯继承。但是C->B->A继承链是在第三方代码中定义的,我无法更改。

有什么好的方法可以解决这个问题吗?

0 投票
2 回答
10852 浏览

cmake - 将外部源目录添加到 CMake 构建

我正在为我的项目使用 Google Mock,并且说明说最好与项目一起构建库,因为不同的编译器标志可能会引入错误。我不想将 gmock/ 目录添加到我的存储库;我宁愿将源作为外部依赖项并将其插入我的构建过程。这让我想到了我的问题:我如何指示 CMake 将外部源目录拉到构建中(即在我的项目的构建目录中构建它)?我在这里发现了一个类似的问题,但答案需要一个严格的目录放置,我宁愿有那个可配置的。还有其他方法吗?

0 投票
1 回答
6145 浏览

c++ - gmock 支持右值引用的解决方法

gmock 不支持将右值引用作为模拟函数的参数(问题报告)。

例如以下代码将无法编译:

我找不到有关 gmock 何时会为此添加支持的信息。

0 投票
1 回答
4038 浏览

grails - Grails 2.0 错误中的模拟测试

我最近将 Grails 1.3.7 项目升级到 Grails 2.0.4,并注意到我的许多带有模拟的单元测试已经开始失败。控制器测试似乎顺利通过,当您让服务相互协作并尝试模拟对协作者的调用时,问题就出现了。关于它的奇怪部分是,如果我运行单个测试,它会通过,但是一旦我运行整个套件,它们就会失败并给出错误:

我什至尝试过使用 GMock 而不是 new MockFor(),但得到了这个非常相似的错误:

这是一个人为的示例,展示了如何复制我得到的错误,以及 GitHub 上的整个示例项目https://github.com/punkisdead/FunWithMocks。关于如何完成这项工作的任何想法?

酒吧控制器:

酒吧服务:

BarController测试:

BarServiceTests:包 funwithmocks

0 投票
1 回答
1320 浏览

c++ - GMOCK 错误:不允许 MOCK_METHOD11

当我模拟一个有 11 个参数的函数时,它会给出一条错误消息:

错误:'function_name' 不是类型

我在用

是不是不能模拟11个参数的函数?

0 投票
1 回答
2098 浏览

c++ - 如何模拟没有类的函数?

我想模拟一个不是类成员的自由函数。

它在 in 中声明.h,其定义在.cpp.

如何模拟此功能?

0 投票
0 回答
129 浏览

unit-testing - gmock 单元测试

考虑这种情况

我需要测试 B 类,所以我想使用模拟的 Method1 来替换真实的 Method1 但不改变 B 类的代码。B类的变量a既不是指针也不是引用,所以有什么办法或解决这个问题。

0 投票
1 回答
11988 浏览

c++ - 如何设置 GMock EXPECT_CALL 为模拟函数调用两个不同的函数

在“测试套件”中的测试函数中调用模拟函数时如何调用两个不同的函数?

详细信息:模拟函数在测试函数中被调用两次。第一次调用时,它应该调用一个函数(测试套件中的本地函数),第二次调用时,它应该调用另一个函数(测试套件中的另一个本地函数)。

那么,如何为上述要求设置 EXPECT_Call 和“Invoke”呢?

0 投票
0 回答
568 浏览

c++ - 使用 GTest/GMock 模拟非虚拟函数时出错

我正在使用 GTest 为我的代码编写 UT。

为了测试“非虚拟”函数,我使用“nm”实用程序生成了“函数重命名”,并将其添加到“test suite.cpp”文件中(在 extern“C”下),格式如下

__wrap_Mangled_name(函数 args 与原始函数相同)

然后在“tst_def”文件中链接相同的内容。仍然当我运行测试套件时,源代码中的原始函数被调用而不是这个“包装的”。但实际上,应该调用这个包装好的函数。

我使用“C++filt”实用程序交叉检查了这个损坏的名称是否正确,它是正确的。

对此有什么建议吗?

谢谢,

乌代