问题标签 [googlemock]

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 回答
5966 浏览

c++ - 我尝试用 googlemock 模拟一个简单的 C++ 方法有什么问题?

根据Patterns for unit testing a C++ method that make a standard library call,我正在测试驱动网络抽象类的开发。为了对进行标准 C 库调用(我无法模拟)以处理 BSD 套接字的代码进行单元测试,我定义了一个接口ISocket,我的实际实现CSocket和模拟都从该接口MockSocket继承。

现在我为这个类编写了我的第一个单元测试Network,它使用 anISocket来完成繁重的工作:

但我在编译时收到此错误:

这是我的界面和模拟的样子:

有什么想法我在这里做错了吗?

0 投票
1 回答
14065 浏览

mocking - 调用模拟上的预期方法时调用方法

我有以下情况:

如果调用 doSomething,则将在 MockA 上调用 foo。如果将调用 foo,我如何触发方法 bla 的调用?是否有可能以某种方式产生如下期望:

?

我希望答案很清楚,例子也很清楚。

提前致谢。市场

0 投票
3 回答
2271 浏览

c++ - 如何谷歌模拟从结构调用的方法

让我们举个例子:

在另一个文件中:

我需要 Google Mock Get 方法,但是,我还需要调用真正的方法。我尝试过使用#ifdef,它似乎有效。然后我决定在#ifdef 部分模拟它,但它什么也没做。

我究竟做错了什么?有没有更清洁的方法呢?请,任何帮助将不胜感激。

0 投票
5 回答
1539 浏览

googletest - 方法和模拟具有相同的类

我有 2 种方法的课程

我想测试 Fun() 方法取决于 FunRet 返回的内容。所以我想模拟 FunRet。我宁愿不想让 FunRet 成为虚拟的。我怎么能这样做?

0 投票
4 回答
19484 浏览

c++ - C++ Unit Testing: Stubs (not mocks)?

Just getting into Unit Testing with C++. It looks like I will need to write several stub classes as I go along. My understanding is there is a difference between Mocks and Stubs. Basically it seems Mocks are for when you are testing something happened on the object (e.g. verifying) while Stubs just facilitate your test. I guess for mocking, I can use googlemock but I don't see anything in it for creating Stubs (ala RhinoMocks' GenerateStub).

Is there a way to get automatically generated stubs? Does googlemock have any support for stubs? Or do I pretty much have to manually create stubs for testing?

0 投票
1 回答
3134 浏览

c++ - 如何使用 operator[] 创建模拟类?

我正在上课operator[],像这样:

如何使用谷歌模拟框架为这个方法创建一个模拟类?

我试过这个:

但这会产生下一个错误:

0 投票
2 回答
6655 浏览

c++ - Google Mock:不允许抽象类类型“xyz”的对象?

使用带有 GMock 的 Visual Studio 2010 C++。尝试为我的类使用的第三方类创建存根对象,但出现以下错误:

错误:不允许抽象类类型“ThirdPartyClassFake”的对象。

第三方类定义如下:

我创建了一个模拟:

现在在我的测试中,我正在尝试做:

错误出现在“ThirdPartyClassFake 存根;” 线。为什么会出现此错误,如何成功创建模拟/存根对象?

0 投票
2 回答
7502 浏览

c++ - Google Mock:在程序退出时发现泄漏的模拟对象?

当我如下定义我的测试时,它可以工作。

ThirdPartyClassFake 是我创建的一个谷歌模拟类。

当我添加将指向我的存根的指针传递给包装类的代码时,我得到一个泄漏的内存错误:

错误是:

不确定它是否相关,但我应该添加ThirdPartyClassFake来自 3rd 方抽象类(我无法控制)的子类,其中包含所有虚拟方法但没有虚拟析构函数。它还使用 Microsoft 特定的属性声明__declspec(novtable)

我认为问题可能在于缺少Google Mock FAQ中描述的虚拟析构函数。但是我相信如果这是第一个测试也应该失败的问题。

如何修复/解决此错误?

0 投票
2 回答
10564 浏览

c++ - Google Mock:“没有合适的默认构造函数可用”?

将 Visual Studio 2010 C++ 与 googlemock 一起使用。我正在尝试使用我创建的模拟,但出现编译器错误:

错误是:

员工假:

员工:

我认为问题是基类没有默认构造函数,但我应该如何解决这个问题?我需要向我的基类添加默认构造函数吗?或者我需要在我的模拟类中添加一个构造函数吗?或者是其他东西?

0 投票
3 回答
4495 浏览

c++ - 单元测试:接口编码?

目前我的项目由各种具体的类组成。现在,当我开始进行单元测试时,看起来我应该为每个类创建一个接口(实际上使我的项目中的类数量增加了一倍)?我碰巧使用 Google Mock 作为模拟框架。请参阅有关接口的 Google Mock CookBook。虽然之前我可能只有类CarEngine,但现在我将拥有抽象类(也称为 C++ 接口)CarEngine然后是实现类CarImplementationEngineImpl或其他。这将允许我消除CarEngine.

在研究这个问题时,我遇到了两种思路:

  1. 仅当您可能需要给定抽象的多个实现和/或在公共 API 中使用时才使用接口,否则不要创建不必要的接口。

  2. 单元测试存根/模拟通常“其他实现”,因此,是的,您应该创建接口。

在进行单元测试时,我应该为项目中的每个类创建一个接口吗?(我倾向于创建易于测试的接口)