public void RasGetConnectStatusAsExpected() { var hRasConn = new IntPtr(1); var lpRasConnStatus = new RASCONNSTATUS(); api.Setup(o => o.RasGetConnectStatus(hRasConn, ref It.Ref <RASCONNSTATUS> .IsAny)).Returns(SUCCESS); eventLoggingPolicy.Setup(o => o.LogEvent(It.IsAny <EventLevel>(), It.IsAny <PInvokeInt32CallCompletedTraceEvent>())).Callback(new LogEventCallback( (level, o1) => { Assert.AreEqual(EventLevel.Verbose, level); var eventData = (PInvokeInt32CallCompletedTraceEvent)o1; Assert.True(eventData.Args.ContainsKey(nameof(hRasConn))); Assert.True(eventData.OutArgs.ContainsKey(nameof(lpRasConnStatus))); Assert.True(eventData.Duration > TimeSpan.Zero); Assert.AreEqual(SUCCESS, eventData.Result); })).Verifiable(); var target = new RasApi32LoggingAdvice(api.Object, eventLoggingPolicy.Object); var result = target.RasGetConnectStatus(hRasConn, ref lpRasConnStatus); eventLoggingPolicy.Verify(); Assert.AreEqual(SUCCESS, result); }