Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing BizTalk数据库查找functoid-单元测试_Unit Testing_Biztalk_Biztalk 2013 - Fatal编程技术网

Unit testing BizTalk数据库查找functoid-单元测试

Unit testing BizTalk数据库查找functoid-单元测试,unit-testing,biztalk,biztalk-2013,Unit Testing,Biztalk,Biztalk 2013,我正在为BizTalk实施单元测试 我可以对BizTalk映射进行单元测试,只要它不包含像数据库查找这样的外部functoid 有没有办法伪造数据库查找functoid,以便我可以正确地对BizTalk映射进行单元测试? 我已经试过提出的解决办法,但没有成功 我还试图找到一种使用Microsoft Fakes的方法,但我找不到需要伪造的组件。编辑:我第一次尝试回答时失败。这个有 我的BizTalk虚拟机上只有VS 2010,所以这是针对Moles的,但我希望对赝品也能起到同样的作用。它直接执行x

我正在为BizTalk实施单元测试

我可以对BizTalk映射进行单元测试,只要它不包含像
数据库查找
这样的外部functoid

有没有办法伪造
数据库查找
functoid,以便我可以正确地对BizTalk映射进行单元测试?

我已经试过提出的解决办法,但没有成功


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

编辑:我第一次尝试回答时失败。这个有

我的BizTalk虚拟机上只有VS 2010,所以这是针对Moles的,但我希望对赝品也能起到同样的作用。它直接执行xslt转换,并使用迂回(填充)的集合覆盖扩展对象集合。这里的Moled程序集是“C:\Program Files(x86)\Microsoft BizTalk Server 2010\Developer Tools\Microsoft.BizTalk.BaseFunctionoids.dll”

var inputStream=Assembly.getExecutionGassembly()
.GetManifestResourceStream(“TestProject.TestFile.xml”);
XPathDocument xpath=新的XPathDocument(inputStream);
var myFunctoids=新的Microsoft.BizTalk.BaseFunctionoids.Moles.MFunctoidScript();
myFunctoids.dblookupInt32StringString=(a、b、c、d、e)=>“1”;
myFunctoids.DBValueExtractInt32String=(a,b)=>“结果”;
myFunctoids.DBLookupShutdown=()=>“”;
XsltArgumentList extensionObjects=新XsltArgumentList();
extensionObjects.AddExtensionObject(“http://schemas.microsoft.com/BizTalk/2003/ScriptNS0", 
myFunctoids.Instance);
var outputStream=new MemoryStream();
var myMap=(Microsoft.XLANGs.BaseTypes.TransformBase)new Map1();
Transform.Transform(xpath、ExtensionObject、outputStream);
outputStream.Position=0;
AreEqual(“result”,新的StreamReader(outputStream).ReadToEnd());

编辑:我第一次尝试回答失败。这个有

我的BizTalk虚拟机上只有VS 2010,所以这是针对Moles的,但我希望对赝品也能起到同样的作用。它直接执行xslt转换,并使用迂回(填充)的集合覆盖扩展对象集合。这里的Moled程序集是“C:\Program Files(x86)\Microsoft BizTalk Server 2010\Developer Tools\Microsoft.BizTalk.BaseFunctionoids.dll”

var inputStream=Assembly.getExecutionGassembly()
.GetManifestResourceStream(“TestProject.TestFile.xml”);
XPathDocument xpath=新的XPathDocument(inputStream);
var myFunctoids=新的Microsoft.BizTalk.BaseFunctionoids.Moles.MFunctoidScript();
myFunctoids.dblookupInt32StringString=(a、b、c、d、e)=>“1”;
myFunctoids.DBValueExtractInt32String=(a,b)=>“结果”;
myFunctoids.DBLookupShutdown=()=>“”;
XsltArgumentList extensionObjects=新XsltArgumentList();
extensionObjects.AddExtensionObject(“http://schemas.microsoft.com/BizTalk/2003/ScriptNS0", 
myFunctoids.Instance);
var outputStream=new MemoryStream();
var myMap=(Microsoft.XLANGs.BaseTypes.TransformBase)new Map1();
Transform.Transform(xpath、ExtensionObject、outputStream);
outputStream.Position=0;
AreEqual(“result”,新的StreamReader(outputStream).ReadToEnd());
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());