gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:21:17 26 4
gpt4 key购买 nike

我有 2 种方法的类(class)

class A
{
void Fun()
{
if(FunRet()>0){///} else {///}
}
int FunRet()
{ return 4;}
};

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

最佳答案

您可以注入(inject)类内依赖项。在这种情况下,让 Fun 接受一个值而不是计算它:

class A
{
void Fun(int x)
{
if(x>0){///} else {///}
}
int FunRet()
{ return 4;}
};

然后您的测试可以将任意值传递给 Fun()。如果您需要强制正确使用,请编写一个公开版本以在您的 API 中公开,并编写一个私有(private)版本进行测试:
class A {
public:
void Fun() { return Fun(FunRet()); }
private:
void Fun(int x); // for testing.
};

关于googletest - 方法和模拟具有相同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6243926/

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