chevron-thin-right chevron-thin-left brand cancel-circle search youtube-icon google-plus-icon linkedin-icon facebook-icon twitter-icon toolbox download check linkedin phone twitter-old google-plus facebook profile-male chat calendar profile-male
Welcome to Typemock Community! Here you can ask and receive answers from other community members. If you liked or disliked an answer or thread: react with an up- or downvote.
0 votes
I have a method as following:

public static void Debug(string message, int eventId)
if (DoILog(LogLevelKey.LogVerboseMsgToEventLog))
Logger.Write(eventId, null, message, null, "General", 0, LogStatus.Success, TraceEventType.Verbose);

I need to mock the SPSecurity.RunWithElevatedPrivileges method which is a static method but it accepts a delegate as the input parameter. Inside the delegate implementation there is another static method: Logger.Write(...).

I wrote this:
SPSecurity.CodeToRunElevated inputArgument = delegate
Logger.Write(_eventId, null, _message, null, "General", 0, LogStatus.Success, TraceEventType.Verbose);
Action spSecurityAction = delegate { SPSecurity.RunWithElevatedPrivileges(inputArgument); };

But it complains that it can't mock that static method because it has a delegate instance as input parameter.

How could I mock SPSecurity.RunWithElevatedPrivileges?

asked by Ben (3k points)

3 Answers

0 votes
Hi Ben,

You can fake all static methods of SPSecurity to prevent that method from running:

public void SPSecurityRunWithElevatedPrivileges_IgnoreCall_CallIsIgnored()

    bool wasCalled = false;
    SPSecurity.RunWithElevatedPrivileges(() => { wasCalled = true; }); 

Please let me know if this helps.

Typemock Support
answered by doron (17.2k points)
0 votes
Hi Doron,

Thanks for your response.

Well, I know that but I need to ensure that the right arguments has been passed to the RunWithElevatedPrivileges() static method.

Is there any way to achieve this? Faking the implementation of a method makes sense but ignoring the arguments doesn't, as we should be able to validate that.

answered by Ben (3k points)
0 votes
There's an older syntax (Natural Mocks) that they use for this sort of thing:

Being able to check specifics about individual arguments in AAA is coming soon from what I'm see in this forum...

Hope that helps.
answered by boo (21.8k points)