对父类虚函数打桩失效
Closed this issue · 0 comments
k-y-c commented
#include<iostream>
#include "stub.h"
using namespace std;
class A{
int i;
public:
virtual int foo(int a){
cout<<"I am A_foo"<<endl;
return 0;
}
};
class B : public A{
int i;
public:
virtual int foo(int a){
cout<<"I am B_foo"<<endl;
A::foo(a);
return 0;
}
};
int foo_stub(void* obj, int a)
{
cout<<"I am foo_stub"<<endl;
return 0;
}
int main()
{
typedef int (*fptr)(A*,int);
fptr A_foo = (fptr)(&A::foo);
Stub stub;
stub.set(A_foo, foo_stub);
B b;
b.foo(1);
return 0;
}
在上述代码中,子类B继承A,并且B::foo调用了A::foo,在打桩时想mock掉A::foo,但是失败了
预期返回结果为
I am B_foo
I am foo_stub
实际返回结果为
I am B_foo
I am A_foo