如何模拟使用CppUTest返回对象的方法

保罗·韦伯斯特

我遵循以下方法:

QMap<QString, int> DefaultConfig::getConfig()
{
    QMap<QString, int> result;
    result.insert("Error", LOG_LOCAL0);
    result.insert("Application", LOG_LOCAL1);
    result.insert("System", LOG_LOCAL2);
    result.insert("Debug", LOG_LOCAL3);
    result.insert("Trace", LOG_LOCAL4);
    return result;
}

我尝试编写可以返回在测试中准备好的QMap的模拟程序:

QMap<QString, int> DefaultConfig::getConfig() {
    mock().actualCall("getConfig");
    return ?
}

但我不知道如何模拟返回值?我想以以下方式在TEST函数中使用模拟

QMap<QString, int> fake_map;
fake_map.insert("ABC", 1);
mock().expectOneCall("getConfig").andReturnValue(fake_map);

我在CppUTest模拟文档中找不到这样的示例。我也知道,.andReturnValue这种形式也行不通。

眼睛

代替传递对象按值/-引用,而是传递by-pointer


例子:

(我在std::map这里使用的是-QMap完全一样)

嘲笑

您可以通过return#####Value()方法获得模拟的返回值由于returnPointerValue()返回a,void*您必须将其强制转换为正确的指针类型。然后,您可以通过取消引用该指针来返回按值。

std::map<std::string, int> getConfig()
{
    auto returnValue = mock().actualCall("getConfig")
                                .returnPointerValue();
    return *static_cast<std::map<std::string, int>*>(returnValue);
}

测试

预期的返回值通过指针传递:

TEST(MapMockTest, mockReturningAMap)
{
    std::map<std::string, int> expected = { {"abc", 123} };
    mock().expectOneCall("getConfig").andReturnValue(&expected);

    auto cfg = getConfig();
    CHECK_EQUAL(123, cfg["abc"]);
}

请不要,PointerConstPointer之间是有区别的

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

调用模拟对象的方法时如何验证返回值

来自分类Dev

使用pytest.fixture返回模拟对象的正确方法

来自分类Dev

如何使模拟方法返回相同的模拟

来自分类Dev

如何访问从模拟库返回的模拟方法

来自分类Dev

如何模拟模拟对象的方法调用?

来自分类Dev

如何模拟返回接口的方法?

来自分类Dev

如何使用AngularJS和Karma从模拟方法返回不同的值?

来自分类Dev

如何检查不仅使用特定参数调用模拟对象的方法?

来自分类Dev

如何模拟在测试方法内部使用的对象?

来自分类Dev

如何使用静态方法在模拟对象上更改值?

来自分类Dev

如何模拟返回用户对象的函数

来自分类Dev

如何从模拟对象返回DispatcherOperation <T>

来自分类Dev

如何使Ninject内核返回NSubstitute模拟对象?

来自分类Dev

如何使模拟对象的任意嵌套属性/方法在Python中返回特定值?

来自分类Dev

如何使用LINQ表达式从模拟存储库返回新对象?

来自分类Dev

如何使用LINQ表达式从模拟存储库中返回新对象?

来自分类Dev

如何使用Jest模拟模拟模块的方法?

来自分类Dev

如何模拟返回Task <IList <>>的方法?

来自分类Dev

如何模拟AppModel方法返回AuthComponent值

来自分类Dev

如何模拟返回最终类的静态方法?

来自分类Dev

如何通过jmockit使用@Transactional方法将模拟对象注入到弹簧管理的对象中?

来自分类Dev

使用scalamock返回Try [T]的模拟方法

来自分类Dev

使用 spock 模拟返回链式方法

来自分类Dev

在测试方法实现中使用模拟对象

来自分类Dev

如何使用EasyMock模拟方法

来自分类Dev

如何强制方法使用模拟?

来自分类Dev

如何使用EasyMock模拟方法

来自分类Dev

如何使用Jest模拟日期对象?

来自分类Dev

如何使用OCMock获取模拟对象的列表

Related 相关文章

  1. 1

    调用模拟对象的方法时如何验证返回值

  2. 2

    使用pytest.fixture返回模拟对象的正确方法

  3. 3

    如何使模拟方法返回相同的模拟

  4. 4

    如何访问从模拟库返回的模拟方法

  5. 5

    如何模拟模拟对象的方法调用?

  6. 6

    如何模拟返回接口的方法?

  7. 7

    如何使用AngularJS和Karma从模拟方法返回不同的值?

  8. 8

    如何检查不仅使用特定参数调用模拟对象的方法?

  9. 9

    如何模拟在测试方法内部使用的对象?

  10. 10

    如何使用静态方法在模拟对象上更改值?

  11. 11

    如何模拟返回用户对象的函数

  12. 12

    如何从模拟对象返回DispatcherOperation <T>

  13. 13

    如何使Ninject内核返回NSubstitute模拟对象?

  14. 14

    如何使模拟对象的任意嵌套属性/方法在Python中返回特定值?

  15. 15

    如何使用LINQ表达式从模拟存储库返回新对象?

  16. 16

    如何使用LINQ表达式从模拟存储库中返回新对象?

  17. 17

    如何使用Jest模拟模拟模块的方法?

  18. 18

    如何模拟返回Task <IList <>>的方法?

  19. 19

    如何模拟AppModel方法返回AuthComponent值

  20. 20

    如何模拟返回最终类的静态方法?

  21. 21

    如何通过jmockit使用@Transactional方法将模拟对象注入到弹簧管理的对象中?

  22. 22

    使用scalamock返回Try [T]的模拟方法

  23. 23

    使用 spock 模拟返回链式方法

  24. 24

    在测试方法实现中使用模拟对象

  25. 25

    如何使用EasyMock模拟方法

  26. 26

    如何强制方法使用模拟?

  27. 27

    如何使用EasyMock模拟方法

  28. 28

    如何使用Jest模拟日期对象?

  29. 29

    如何使用OCMock获取模拟对象的列表

热门标签

归档