2011-01-19 36 views

Trả lời

16

Một cách dễ dàng để kiểm tra các cuộc gọi destructor:

class MockFoo : public Foo { 
    ... 
    // Add the following two lines to the mock class. 
    MOCK_METHOD0(Die, void()); 
    virtual ~MockFoo() { Die(); } 
}; 

Trong chức năng kiểm tra của bạn:

MockFoo* foo = new MockFoo; 
    ... 
    { 
    EXPECT_CALL(*foo, Die()); 
    } 

Xem chi tiết có thể được tìm thấy ở đây: Mocking Destructors

3

Trừ khi bạn là đi qua --gmock_catch_leaked_mocks=0, sau đó gmock nên đã được phát hiện khi bạn không phá hủy một mô hình. Trình phá hủy là nơi các yêu cầu không hài lòng được gắn cờ là lỗi, vì vậy gmock có hỗ trợ đặc biệt để phát hiện khi nó không được gọi.

+0

Có một thông báo trước: GMock sẽ * không * phát hiện các mock bị rò rỉ không có bất kỳ kỳ vọng nào được đính kèm với chúng (ON_CALL/EXPECT_CALL). Điều này là bởi vì kiểm tra rò rỉ được dựa trên thông tin được lưu trữ trong thực thể đặc biệt được gọi là đăng ký GTest, và mocks mà không mong đợi không được đăng ký trong đó. – r5ha

Các vấn đề liên quan