I've been tweaking the PipelineTesting API further as I use it and write the unit tests for it. Here are some of the improvements I've made on the pipeline creation syntax:
ReceivePipelineWrapper pipeline = Pipelines.Receive() .AddValidator(new XmlValidator());
I think this looks much better.
Creating standard components
One of the problems with the current PipelineTesting version is that while it allows you to use one of the standard assembler/disassembler components on an empty pipeline, it provides no help doing so. Using them can be pretty annoying because there's no easy way to add document and envelope schemas.
The cause for this is that the relevant properties in the standard Xml/FF assembler and disassembler components use types defined in Microsoft.BizTalk.Component.Utilities.dll. The types themselves are public (and even somewhat documented), but the assembly can only be found in the GAC, which means referencing it in tests projects is a pain in the neck.
To save yourself the trouble from having to do this, the new PipelineTesting API will also expose classes to make it easier to create and configure the standard XML and Flat File assembler and disassembler components. Here's an example of the syntax I'm implementing:
XmlAssembler asm = Assembler.Xml() .WithDocumentSpec<Schema1_NPP>() .WithEnvelopeSpec<SimpleEnv>() .WithPreserveBom(true); SendPipelineWrapper pipeline = Pipelines.Send() .AddAssembler(asm); // ...