【问题标题】:BizTalk database lookup functoid - Unit TestingBizTalk 数据库查找 functoid - 单元测试
【发布时间】:2015-09-01 08:33:18
【问题描述】:

我正在为 BizTalk 实施单元测试。

只要 BizTalk Maps 不包含像 Database Lookup 这样的外部 functoid,我就可以对它进行单元测试。

有什么方法可以伪造Database Lookup functoid,以便我可以正确地对我的 BizTalk 地图进行单元测试?

我已经在http://truenorthit.co.uk/2014/11/17/unit-testing-biztalk-maps-external-functoids/ 上尝试了建议的解决方案,但没有成功。

我也试图找到一种方法来使用Microsoft Fakes,但我找不到我需要伪造的组件。

【问题讨论】:

    标签: unit-testing biztalk biztalk-2013


    【解决方案1】:

    编辑:我第一次尝试回答没有奏效。这个可以。

    我的 BizTalk VM 上只有 VS 2010,所以这适用于 Moles,但我希望它应该与 Fakes 相同。它直接执行 xslt 转换并用绕行(填充)的对象集合覆盖扩展对象集合。这里的 Moled 程序集是“C:\Program Files (x86)\Microsoft BizTalk Server 2010\Developer Tools\Microsoft.BizTalk.BaseFunctoids.dll”。

    var inputStream = Assembly.GetExecutingAssembly()
                        .GetManifestResourceStream("TestProject.TestFile.xml");
    XPathDocument xpath = new XPathDocument(inputStream);
    
    var myFunctoids = new Microsoft.BizTalk.BaseFunctoids.Moles.MFunctoidScripts();
    myFunctoids.DBLookupInt32StringStringStringString = (a, b, c, d, e) => "1";
    myFunctoids.DBValueExtractInt32String = (a, b) => "result";
    myFunctoids.DBLookupShutdown = () => "";
    
    XsltArgumentList extensionObjects = new XsltArgumentList();
    extensionObjects.AddExtensionObject("http://schemas.microsoft.com/BizTalk/2003/ScriptNS0", 
                                        myFunctoids.Instance);
    
    var outputStream = new MemoryStream();
    
    var myMap = (Microsoft.XLANGs.BaseTypes.TransformBase)new Map1();
    myMap.Transform.Transform(xpath, extensionObjects, outputStream);
    
    outputStream.Position = 0;
    Assert.AreEqual("<expected>result</expected>", new StreamReader(outputStream).ReadToEnd());
    

    【讨论】:

      猜你喜欢
      • 2010-11-01
      • 2023-03-15
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多