问题标签 [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.
unit-testing - 如何使用 gmock 模拟这个类,它的实例作为其他类中的类成员
我是新用户gmock
。我不知道如何使用gmock
这个类来模拟它的实例作为其他类中的类成员。代码如下所示:
现在,我想用来gmock
模拟B
,然后mockB
在A
UnitTest 中使用。你能告诉我怎么做吗?谢谢!
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继承链是在第三方代码中定义的,我无法更改。
有什么好的方法可以解决这个问题吗?
cmake - 将外部源目录添加到 CMake 构建
我正在为我的项目使用 Google Mock,并且说明说最好与项目一起构建库,因为不同的编译器标志可能会引入错误。我不想将 gmock/ 目录添加到我的存储库;我宁愿将源作为外部依赖项并将其插入我的构建过程。这让我想到了我的问题:我如何指示 CMake 将外部源目录拉到构建中(即在我的项目的构建目录中构建它)?我在这里发现了一个类似的问题,但答案需要一个严格的目录放置,我宁愿有那个可配置的。还有其他方法吗?
grails - Grails 2.0 错误中的模拟测试
我最近将 Grails 1.3.7 项目升级到 Grails 2.0.4,并注意到我的许多带有模拟的单元测试已经开始失败。控制器测试似乎顺利通过,当您让服务相互协作并尝试模拟对协作者的调用时,问题就出现了。关于它的奇怪部分是,如果我运行单个测试,它会通过,但是一旦我运行整个套件,它们就会失败并给出错误:
我什至尝试过使用 GMock 而不是 new MockFor(),但得到了这个非常相似的错误:
这是一个人为的示例,展示了如何复制我得到的错误,以及 GitHub 上的整个示例项目https://github.com/punkisdead/FunWithMocks。关于如何完成这项工作的任何想法?
酒吧控制器:
酒吧服务:
BarController测试:
BarServiceTests:包 funwithmocks
c++ - GMOCK 错误:不允许 MOCK_METHOD11
当我模拟一个有 11 个参数的函数时,它会给出一条错误消息:
错误:'function_name' 不是类型
我在用
是不是不能模拟11个参数的函数?
c++ - 如何模拟没有类的函数?
我想模拟一个不是类成员的自由函数。
它在 in 中声明.h
,其定义在.cpp
.
如何模拟此功能?
unit-testing - gmock 单元测试
考虑这种情况
我需要测试 B 类,所以我想使用模拟的 Method1 来替换真实的 Method1 但不改变 B 类的代码。B类的变量a既不是指针也不是引用,所以有什么办法或解决这个问题。
c++ - 如何设置 GMock EXPECT_CALL 为模拟函数调用两个不同的函数
在“测试套件”中的测试函数中调用模拟函数时如何调用两个不同的函数?
详细信息:模拟函数在测试函数中被调用两次。第一次调用时,它应该调用一个函数(测试套件中的本地函数),第二次调用时,它应该调用另一个函数(测试套件中的另一个本地函数)。
那么,如何为上述要求设置 EXPECT_Call 和“Invoke”呢?
c++ - 使用 GTest/GMock 模拟非虚拟函数时出错
我正在使用 GTest 为我的代码编写 UT。
为了测试“非虚拟”函数,我使用“nm”实用程序生成了“函数重命名”,并将其添加到“test suite.cpp”文件中(在 extern“C”下),格式如下
__wrap_Mangled_name(函数 args 与原始函数相同)
然后在“tst_def”文件中链接相同的内容。仍然当我运行测试套件时,源代码中的原始函数被调用而不是这个“包装的”。但实际上,应该调用这个包装好的函数。
我使用“C++filt”实用程序交叉检查了这个损坏的名称是否正确,它是正确的。
对此有什么建议吗?
谢谢,
乌代