如何设定提升的期望::shared_array
How to set an expectation for a boost::shared_array
我正在为某些类编写一些单元测试。这些类使用另一个comms_client
来执行网络通信。例如,comms_client
提供了一个send
方法,该方法接收参数 a boost::shared_array
:
class comms_client
{
...
public:
void send(boost::shared_array<boost::uint8_t> const & buffer, size_t size) = 0;
...
};
为了测试类发送的内容,我想创建一个模拟类,允许我检查正在发送的数组的内容是否正确。模拟课看起来像
class comms_client_mock : public comms_client
{
...
public:
MOCK_METHOD2(send, void(boost::shared_array<boost::uint8_t> const & buffer, size_t size));
..
};
不幸的是,我还没有找到在具有这种类型的参数中放置期望的方法。我尝试使用该testing::ElementsAreArray
但它引发了编译错误。 是否有可用于在此类参数中放置期望的函数?您能否为 gmock 库提供自定义谓词或类来比较预期参数和实际参数?
在谷歌搜索和阅读了一些文档之后,我终于找到了GoogleMock食谱。按照其中包含的规范和示例编写一个简单的自定义匹配器非常简单。
这是生成的匹配器:
#include <gmock/gmock.h>
MATCHER_P2(CompareArray, expected, size, "The buffer doesn't match the expected value.")
{
return std::equal(arg.get(), arg.get() + size, expected.get());
}
这就是它的使用方式:
boost::shared_array<boost::uint8_t> buffer(new boost::uint8_t[1]);
buffer[0] = 0x01;
EXPECT_CALL(send(_camera.get(), CompareArray(buffer, 1), 1));
相关文章:
- 从类型std::函数传递变量失败,尽管调用方期望的类型完全相同
- 一元*运算符的操作数是否期望一个 prvalue
- 什么 /可以/ 你从一个函数返回. 并期望它在到达时还活着?
- 引用 std::shared:ptr 以避免引用计数
- 如何将子类作为函数的参数传递给期望基类,然后将该对象传递到指向这些抽象类对象的指针向量中?
- 根据实例化点期望不同的类型
- gtest 期望无序元素与自定义比较器/匹配器一起使用
- C++ 期望":"(冒号)的构造函数
- 将 std::vector::d ata 传递给函数期望类型**(双指针)
- dopen():不以 root 身份运行时"failed to map segment from shared object"
- 期望在奇怪的地方有一个";"
- 如何期望通过使用Google Test(Mock)以特定频率调用函数
- 如何测试序列生成器将生成期望的项目
- 提升精神 x3 错误处理程序与期望
- 无法使用 libtool 将 -shared 参数传递给 g++
- C++中的后缀不像我期望的那样表现
- MSVC++ 17 std::copy 期望自定义迭代器的"operator -"
- 如何区分在同一行上创建的 gmock 期望
- 为什么我的 Hippomock 期望在使用多重继承时失败
- std::设置扣除指南不像我期望的那样工作