作者:本站编辑 发布日期:2019-04-30 11:40:24
// 手打不保证编译ok
class SingleDb {
public:
int getMoney(){...}
SinlgeDb(const SingleDb &) = delete;
void operator=(const SingleDb &) = delete;
static SingleDb &get() {
static SingleDb db;
return db;
}
};
|
struct Client{
int doSth() const {
SingleDb &db = SingleDb::get();
if(db.getMoney() < 0) return -1;
}
};
|
struct DbBase {
virtual int getMoney() = 0;
};
class SingleDb: public DbBase {
// 没啥变化
};
//客户端
struct Client {
DbBase &db;
explicit Client(DbBase &db): db(db) {}
int doSth() const {
if(db.getMoney() < 0) return -1;
}
};
|
TEST_CASE("", "")
{
using namespace fakeit;
Mock mock;
when(Method(mock, getMoney())).Return(-1);
Client c(mock.get());
REQUIRE(c.doSth() == -1);
}
|
// 构造打桩继承类
struct DataBaseMock : public DbBase
int getMoney() {return -1;}
};
// 测试
...
DataBaseMock db;
Client c(&db);
REQUIRE(c.doSth() == -1);
|