public void CanCaptureRequestsAndResponsesUsingExplicitFormatter()
{
windsorContainer.Register(
Component.For<LogMessageEndpointBehavior>()
.Attribute("scope").Eq(WcfExtensionScope.Explicit)
.Named("logMessageBehavior"),
Component.For<IOperations>()
.Named("operations")
.AsWcfClient(new DefaultClientModel()
{
Endpoint = WcfEndpoint
.BoundTo(new NetTcpBinding { PortSharingEnabled = true })
.At("net.tcp://localhost/Operations")
.LogMessages<HelloFormatter>()
})
);
var client = windsorContainer.Resolve<IOperations>("operations");
Assert.AreEqual(42, client.GetValueFromConstructor());
Assert.AreEqual(4, memoryAppender.GetEvents().Length);
int i = 0;
foreach (var log in memoryAppender.GetEvents())
{
Assert.AreEqual(typeof(IOperations).FullName, log.LoggerName);
Assert.IsTrue(log.Properties.Contains("NDC"));
if ((++i % 2) == 0)
{
Assert.AreEqual("Hello", log.RenderedMessage);
}
}
}