Ich habe eine Klasse sagen A wie unten erwähnt:Mock Methoden, die nicht virtuell sind
class A
{
void show()
{}
int data(int x)
{}
.....
};
ich die Klasse verspotten müssen - da die Mitgliederfunktionen nicht virtuell sind - kann ich meine mock Klasse wie entwerfen unten erwähnt :
class MockA : public A
{
MOCK_METHIOD0(show, void());
MOCK_METHIOD1(data, int (int));
}
Kann ich diese Art und Weise implementieren und ist es eine Chance von mocka Verspottung eine beliebige Funktion der Klasse zu verzichten? Objekte, die mit MockA erstellt wurden, werden jemals landen und die tatsächliche Methodenimplementierung der Klasse A aufrufen.
Wird obige Methode die tatsächliche Implementierung nicht überschreiben, wenn Objekte mit MockA erstellt werden? – Prakash
Nicht sicher, was Sie meinen, "überschreiben Sie die tatsächliche Implementierung." Nicht-virtuelle Methoden werden namentlich verknüpft, so dass der Compiler entweder einen direkten Aufruf z. entweder 'A :: show' oder' MockA :: show'. Beachten Sie, dass selbst im Fall der virtuellen Methode der Mock nicht allgemein von einer Implementierung geerbt wird, sondern von einer Schnittstelle, von der die Implementierung auch erbt. –