2

My question is the same as Mockito: Mock private field initialization but for Google Mock framework. In a nutshell:

class Target { private: Person person = new Person(); public: void testMethod() { person.someMethod(); } }; 

How can I mock the person instance while making unit tests for Target class?

1 Answer 1

3

A non-answer here: simply don't do it this way.

Your problem is the call to new here. Thing is: that makes testing hard, and it also creates a very tight coupling between the Target and the Person class.

The default alternative is: provide a factory to the Target class that creates Person objects for you.

By going for that solution, you

  • avoid to need to mock the call to new
  • you end up with a better design!

And unless I am misreading the documentation, mocking calls to new isn't possible with C++ mocking anyway.

Sign up to request clarification or add additional context in comments.

2 Comments

Yeah, I see what you are gonna say. But I am working on adding unit tests for an in-production project and I am ending up using a lot of preprocessor directives to workaround this kind of issues :(
Could you please give me some advice with this

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.