gpt4 book ai didi

c++ - expect_call 中使用的 SaveArg 值

转载 作者:行者123 更新时间:2023-12-04 17:10:32 37 4
gpt4 key购买 nike

我必须遵循模拟函数

DoSomething(const char* par0, const char* par2)
DoSomething2(std::string);

我将 DoSomething 的值保存到

std::string savedPar_;

我想在 DoSomething2 中使用它。如何做到这一点?

EXPECT_CALL(mockd_, DoSomething(_, _,))
.WillOnce(DoAll(SaveArg<1>(&savedPar_), (Return(Ok))));

EXPECT_CALL(mockd_, DoSomething2(savedPar_,))
.WillOnce((Return(Ok))));
// has not yet the val


sut_->work();
// savedPar_ has the value

最佳答案

实现此目的的一种方法是在调用 DoSomething2 时使用 SaveArg,然后比较从 DoSomethingDoSomething2 保存的参数

  EXPECT_CALL(mockd_, DoSomething(_, _))
.WillOnce(DoAll(SaveArg<1>(&savedPar1_), (Return(Ok))));

EXPECT_CALL(mockd_, DoSomething2(_))
.WillOnce(DoAll(SaveArg<0>(&savedPar2_), (Return(Ok))));

EXPECT_EQ(savedPar1_, savedPar2_);

另一种是创建一个接收指针的自定义匹配器,像这样

MATCHER_P(SameAs, value, PrintToString(*value)) { 
return arg == *value;
}

你的期望是这样的

  EXPECT_CALL(mockd_, DoSomething(_, _))
.WillOnce(DoAll(SaveArg<1>(&savedPar_), (Return(Ok))));

EXPECT_CALL(mockd_, DoSomething2(SameAs(&savedPar_)))
.WillOnce((Return(Ok)));

关于c++ - expect_call 中使用的 SaveArg 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69545700/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com