我试图重写一个简单的cmath库函数-- 'pow‘
下面是我的代码:
#include "stdafx.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <cmath>
class powInterface {
public:
virtual ~powInterface() {}
virtual double pow(double _Xx, int _Yx) = 0;
};
class LibXMock : public powInterface {
public:
virtual ~LibXMock() {}
MOCK_METHOD2(pow, double(double _Xx, int _Yx));
};
int main()
{
LibXMock LibXMockObj;
EXPECT_CALL(LibXMockObj, pow(10.00, 3));
double ans = LibXMockObj.pow(10.00, 3);
EXPECT_EQ(2, ans);
} 代码编译得很好,但执行时会产生以下输出:
c:\gmock>
_test_example.cpp(36): error: Expected: 2
To be equal to: ans
Which is: 0
Press any key to continue . . .我不确定为什么返回值是0-我想知道我们是否需要添加一个自定义的'pow‘方法,所以我注入了以下代码:
double pow(double _Xx, int _Yx)
{
return LibXMockObj.pow(_Xx , _Yx);
}现在编译器无法编译声明重新定义pow方法代码-因此,我如何实现自己的pow库方法并调用它?
发布于 2017-07-28 17:53:54
我没有尝试编译,但我的想法是这样做:
#include "stdafx.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <cmath>
class powInterface {
public:
virtual ~powInterface() {}
virtual double pow(double _Xx, int _Yx) = 0;
};
class LibXMock : public powInterface {
public:
virtual ~LibXMock() {}
MOCK_METHOD2(pow, double(double _Xx, int _Yx));
double customPow(double _Xx, int _Yx) {
return 2;
}
};
int main()
{
LibXMock LibXMockObj;
EXPECT_CALL(LibXMockObj, pow(10.00, 3)).Times(1).WillOnce(::testing::Invoke(LibXMockObj, &LibXMock::customPow));
double ans = LibXMockObj.pow(10.00, 3);
EXPECT_EQ(2, ans);
} https://stackoverflow.com/questions/45370190
复制相似问题