Faking global methods

Top  Previous  Next

Just like instance or static methods, you might find you want to change the behavior of global C methods.

 

Let's say you want to change the behavior of the global method fopen.

 

 

FAKE_GLOBAL(fopen); // This is required here as the linker might copy multiple global implementations of fopen within your code

WHEN_CALLED(fopen(0,0)).Return(_anotherFile);

 

 

The FAKE_GLOBAL declaration causes fopen to return a default value (in this case a valid pointer to fake FILE* struct see Recursive Fakes), and avoid calls to the original implementation.

 

But what if I want to return another value?

Combined with the WHEN_CALLED declaration, with the Return command, we can also control the return value. (See Behavior Setting for additional behaviors)

 

Note: It's safer to use FAKE_GLOBAL as this will cover all implementations in your code. Using only WHEN_CALLED will be faster but it will only fake the current copy of the global method.

 

Using FAKE_GLOBAL isn't required before using WHEN_CALLED, unless Isolator++ Professional throws an exception that FAKE_GLOBAL is required.


Copyright  Typemock Ltd. 2009-2025.  All Rights Reserved.