Dear community,
I'm using the current version of Isolator++. I'm trying to assert that a global method is called with specific arguments. That global method comes from a third party framework, delivered without debugging information.
According to my tests, using WHEN_CALLED macro to fake a return value seems to work. But if I try to use ASSERT_WAS_CALLED macro, I get the following message:
The function 'CSTSessionServices::SetSessionParameter' information cannot be found by Isolator++. Making the application's PDB accessible to Isolator++ will usually solve this problem. If the PDB's and the dll's are not in the same folder you can set the environment variable IPP_PDB_PATH to the path of the PDB's.You can set several folders separate with semicolon like this: set IPP_PDB_PATH="C:Symbols;C:WindowsSymbols"Otherwise please use FAKE_GLOBAL(CSTSessionServices::SetSessionParameter) macro to make the function visible to Isolator++.To verify that the PDB is generated, please go to project settings->Linker->Debugging and set 'Generate Debug Info' to 'Yes'.Also make sure that in C++->General 'Debug Information Format' is set to 'Program Database'
The example code is:
CSTUnicodeString value;
FAKE_STATICS<CSTSessionServices>();
FAKE_GLOBAL(CSTSessionServices::SetSessionParameter);
WHEN_CALLED(CSTSessionServices::SetSessionParameter(value, value)).Return(S_OK);
...
ASSERT_WAS_CALLED(CSTSessionServices::SetSessionParameter(_, _));
At the end, I'd like to assert that the method is called with specific arguments, multiple times with different arguments each time, whatever the call order, but right now, I don't even manage to assert that the method is called.
Is there a way to workaround, stating that I won't be able to get debugging information for the framework I'm using?
Any help will be greatly appreciated