1
我有一個簡單模擬類:Object參數來模擬EXPECT_CALL
class MockCanInterface : public lib::CanInterface {
public:
MockCanInterface() : CanInterface({"mock"}) {}
MOCK_METHOD1(Write, bool(const lib::CanFrame& frame));
MOCK_METHOD1(Read, bool(lib::CanFrame* frame));
};
在測試代碼我想將對象傳遞到Write
方法。有沒有辦法與.With
條款做到這一點?它直接與傳遞參數一起工作,但現在與.With
。代碼編譯,但在執行期間失敗 - 對象的大小是正確的,但數據不是。
這工作:
EXPECT_CALL(can_, Write(expected_command_))
.WillOnce(Return(true));
這不:
EXPECT_CALL(can_, Write(_))
.With(Args<0>(expected_command_))
.WillOnce(Return(true));
我承認,有可能是一些在路上丟失代碼設置的預期目標。
感謝您的解決方案。你是否嘗試過使用'const lib :: CanFrame&'來模擬'Write'的代碼?我一直得到這個錯誤'錯誤:傳遞'const lib :: CanFrame'作爲'this'參數丟棄限定符' – ilya1725
你是對的。它只適用於非const引用。我找不到一個const引用參數的解決方案。然而,我在這裏留下我的答案,也許這有助於找到正確的答案。 – Soeren