2013-05-21 28 views
1

我使用Google Test和Google Mock进行单元测试,并且需要检查对象的调用,该对象被放入std ::向量。像这样:如果在Google Mock Framework中复制模拟电话,是否有任何好的方法

TEST(FooTest, someTest) 
{ 
    // Given 
    CSomeClass someObject; 
    StrictMock<MockFoo> strictFoo; 
    std::vector<Foo> fooContainer; 
    fooContainer.push_back(strictFoo); 

    // Expected 
    EXPECT_CALL(strictFoo, doSomething()); // can't do this because there is a copy of strictFoo in vector 

    // When 
    someObject.do(fooContainer); 
} 

我非常感谢任何提示,以完成此操作。

回答

1

我想我会去的东西更是这样的:

TEST(FooTest, someTest) 
{ 
    // Given 
    CSomeClass someObject; 
    std::vector<std::unique_ptr<Foo>> fooContainer; 
    fooContainer.emplace_back(new MockFoo); 

    // Expected 
    auto mock_foo_ptr(static_cast<MockFoo*>(fooContainer.rbegin()->get())); 
    EXPECT_CALL(*mock_foo_ptr, doSomething()); 

    // When 
    someObject.Do(fooContainer); 
} 
相关问题