问题标签 [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 投票
3 回答
5637 浏览

c++ - 在传递给模拟函数的参数上调用成员函数的最简单方法是什么?

给定接口

和 goole mock

指定调用Fooable()模拟方法参数的操作的最简单方法是Foo()什么?

我试过了

但这不会编译,因为Invoke()有一个参数需要一个自由函数,而不是成员函数。

使用boost::bind应该可能工作,但不一定会使代码太可读。在我写一个 custom 之前Action,我想检查一下我是否没有遗漏一些非常明显的东西。

0 投票
2 回答
274 浏览

java - 将 GMock 与 Spring 一起使用,我如何只为多个测试设置一次 Spring 上下文?

我发现当使用和在内存数据库中运行多个gmock测试时,我收到有关表已经存在的错误。它似乎多次运行 spring 上下文创建,即使它在给定的测试类中只设置一次作为所有测试方法使用的字段。

理想情况下,我希望多个类重用相同的上下文,但即使是具有单个 GMockTestCase 的多个方法也正在重新创建弹簧上下文。

覆盖 Junit 设置方法没有帮助。

我发现这种行为不直观且不正确,但对于gmock或 groovy 的工作原理,我可能有一些不明白的地方

我现在可以使用但不理想的一种解决方法是使用带注释的技术并像这样扩展弹簧测试类:

0 投票
1 回答
565 浏览

c++ - 如何创建一个修改其参数的函数对象?

我想SomeFunction用. 看起来可以与结合使用,但我不知道如何。SetArgboostbindlambda

这段代码非常简单,但我想替换它的原因是我需要一个 for23etc 参数。

要求:

  • 我想要一个返回函数对象的函数。
  • 当我调用这个函数对象时,参数是通过引用传递的。
  • 该函数通过将引用传入的对象设置为预设值来修改它们。
  • 在上面的代码中,预设值是按值传入的ctor,但任何其他方式也可以。

下面的代码演示了用法:

一些上下文:

我想测试 class 的客户端代码Foo。所以我想func1用我自己的替换实现,但是以一种灵活的方式。

Invoke 接受一个函数或函数对象。在它的新实现中func1调用由返回的函数对象SetArg并将其参数设置为字符串"hello"

Invoke 是 gmock/gtest 的一部分,但SetArg不是。

0 投票
2 回答
1905 浏览

c++ - 如何在单元测试时模拟基类的非覆盖、虚拟/非虚拟方法?

如何在基类中模拟非覆盖的非虚拟/虚拟方法并仅测试派生类的方法?这里的情况是:我有一个基类 X,它具有连接到外部服务器并执行其他一些操作的方法。我有一个派生自 X 的类 Y。我在 Y 中实现了两个方法。我只想对它们进行单元测试。我只担心这两种方法,我不希望调用基类实现来连接服务器等(我想模拟这些方法,但我不想在派生类中覆盖这些方法Y 并且什么都不做,因为它是生产代码)。关于如何单独对这些方法进行单元测试的任何想法/想法?

PS:我正在使用 C++/GTest 进行开发和单元测试。

0 投票
2 回答
13789 浏览

gmock - 如何在 gmock 中设置自定义引用变量

我在我的项目中使用 gmock 并且遇到了为模拟函数设置自定义引用变量的问题。假设我有一个类如下:

有一个使用 XXXClient::QueryXXX 的客户端类 XXXRunner::DoSomething,我想模拟 XXXClient 来测试 XXXRunner::DoSomething。

问题是 QueryXXX 的第二个参数 'Response' 不是返回值,而是引用变量,我在 XXXClient::QueryXXX 的 Response 中填充了一些数据。我想为响应设置一个自定义数据来验证 XXXRunner::DoSomething 的不同条件。

gmock 框架可以设置预期的返回值,但我找不到设置“返回变量”的方法?

那么该怎么做呢?

0 投票
2 回答
541 浏览

c++ - 使用具有 program_options::variables_map 作为参数的函数初始化 EXPECT_CALL 时出现编译器错误

尝试执行此操作时,我遇到了 EXPECT_CALL 方法的问题:

MyMethod 看起来像这样:

编译时出现错误:

还有一些类似的错误。

0 投票
1 回答
332 浏览

c++ - 需要 Google 模拟帮助,

我有2节课。

我为 SomeClass 做了一个模拟类。

现在我想在单元测试中,当我调用 AnotherClass.AnotherFunction 时,我会得到我自己选择的结果。AnotherFunction 使用 SomeClass.SomeFunction() 的函数。我嘲笑了SomeClass。我已经设置了当模拟对象的函数调用它时返回 10。但是当我运行单元测试时它返回 5(原始函数)。我该怎么办。下面是我写的单元测试。

我正在使用 Visual Studio 2008 和 gmock 1.6.0。我在做什么错。在 realClass.AnotherFunction 上,我想要 mock.SomeFunction() 的模拟输出。

0 投票
2 回答
984 浏览

groovy - 带有 GMock 的具有多个静态方法的部分模拟类

我正在使用 GMock 为我们现有的 Java 项目添加一些单元测试。我们有多个需要测试的方法是静态方法的地方,它们在我们要测试的方法中使用了额外的静态方法。

我希望能够部分模拟该类,除了用于测试的初始入口点之外,该类几乎所有静态方法。

例如:

我希望我可以模拟第二个静态方法,但是一旦我这样做,method(String) 就会进入 MIA 并且执行测试失败并出现预期异常。有没有办法可以部分模拟类,保持第一种方法的功能,但模拟第二种方法的静态访问?

我也尝试过使用元类编程来模拟该方法,但如果我将方法设置为一个闭包,第一个方法会再次进入 MIA。不知道如何使用重载方法来做到这一点。有任何想法吗?

0 投票
3 回答
2430 浏览

gmock - 你做了什么来解决你提到的 gmock(附上链接)?

在 Mac 上构建 Google 测试时出现链接错误(命令行)

在底部,您编写了关于在同一台计算机上查找多个 gmock 安装的编辑,这弄乱了编译器的包含路径,因此它使用的是旧的 1.5 32 位版本而不是正确的版本。

我通过 brew 安装了我的;brew install gmock,一切正常,但我遇到了同样的问题。如果您能像您在帖子中提到的那样告诉我如何正确编译它,我会很高兴去给您一些赞成票,或者您可以编辑链接,我会阅读它(请在您阅读时通知我虽然做)。

我已经阅读了 googlemock google 代码页上的说明以及我下载的内容,以便尝试根据它进行构建。我已经搜索了很多,我找不到任何与你所说的接近的东西。

为了向你解释我在做什么,我写了一个非常简单的测试: http ://codepad.org/zxBugY0w

当我尝试使用本地包含的信息编译它时,我得到: http: //pastebin.com/fqEZ6zTq

0 投票
1 回答
1824 浏览

c++ - QTestLib 单元测试框架 + Gmock (创建 QTCPServer - Mock Object)

我正在使用 Qt 的 QTestLib 单元测试框架 + GMOck。

我正在尝试使用 gMock 设置模拟服务器,以便在单元测试中简单地从 QTcpSocket 接收数据到 VerifySendData() 方法。

如果有人能给我一个例子,我如何创建模拟对象 gMOCK(期望调用,创建模拟对象)