2
創建我有這樣一羣指針參數 - >元素添加/刪除,用代碼snippt:如何期待稍後
// production code:
Group::add(Element* e) {...};
Group::remove(Element* e) {...};
ElementDerived::ElementDerived(Group* group){ group->add(this);}
ElementDerived::~ElementDerived(Group* group){ group->remove(this);}
每當我想測試的類ElementDerived
,我必須做到以下幾點在安裝/拆卸。但是,如何在沒有_
的情況下明確設定論證期望?
// test code:
struct Test_ElementDerived : public ::testing::Test {
void SetUp() override {
ElementDerived* p = nullptr;
EXPECT_CALL(group, add(_)) // how to set expection on the pointer argument?
.WillOnce(Invoke([&p](auto base_ptr) {
p = static_cast<ElementDerived*>(base_ptr);
}));
sut = std::make_unique<ElementDerived>(&group);
}
void TearDown() override {
EXPECT_CALL(group, remove(sut.get()));
}
MockGroup group{};
std::unique_ptr<ElementDerived> sut;
};
期望可能應該在測試機構中設置,而不是在夾具中。 –
好吧,我同意,但這是一個普遍的規則。在某些情況下,動作已經在構造函數中發生。你看到代碼片斷,這並不複雜或不合理的情況。 – pepero
'EXPECT_EQ(sut.get(),p);'? – Jarod42