作为一个相关的子问题 - 是否有任何CF单元测试框架支持或更容易使用模拟/存根?
我在一个看起来最有希望的快速谷歌中发现的2是MXUnit和CFUnit.是否有其他人,以及哪一个(?)有最广泛的采用和积极的发展?足够的问题塞进一个?
基本上我想做个好的选择.
编辑请注意,在最初编写问题时,MXUnit是首选,而TestBox也不会在github上使用几年.请参阅已接受答案的评论.
我正在研究CFML的MxUnit测试框架.在其中,我想检查函数的返回值是否是有效的JSON.目前我正在使用:
assertEquals(True,IsJSON(userEventItems),'The return must be json');
Run Code Online (Sandbox Code Playgroud)
是否有任何MXUnit函数来检查断言是否是JSON,就像assertIsQuery()在MXUnit中一样?
当我们想要创建一个ColdFusion应用程序(在我们的开发环境中,与我的PC分开一个盒子)时,我们设置了一个IIS(互联网信息服务)站点,其中包含构成我们站点的所有CFCs CFM等的物理位置.
据我所知,MXUnit需要在webroot上,测试本身也是如此,所以我创建了mxunit和IIS中的tests文件夹的虚拟目录.我也给这个站点一个绑定(从我的浏览器访问该站点,我也在我的PC上编辑我的主机文件).然后使用提供的wsconfig.exe将它们设置为ColdFusion站点.
为了让MXUnit在Eclipse中工作,我需要设置它在mxunit库中找到RemoteFacade的位置; 这与我的绑定有关.所以我可能会说它的位置是:
http://dev19-site1/mxunit/framework/RemoteFacade.cfc
Run Code Online (Sandbox Code Playgroud)

然而; 每次我想要为不同的站点运行我的单元测试时,我必须将这些设置更改为
http://dev19-DIFFERENTSITE/mxunit/framework/RemoteFacade.cfc
Run Code Online (Sandbox Code Playgroud)
或者MXunit声称无法找到我的CFC(这是有道理的,因为他们在不同的webroot下)
这有点令人恼火,因为我可能会同时在多个网站上工作.
是否可以设置MXUnit,以便更改我正在处理的特定webroot(但所有在同一个盒子上)并不需要我不断更改MXUnit设置?
我是Coldfusion开发的新手,并继承了已部署的项目.由于各种技术限制,我们无法在我们的工作站本地开发(就像您为.net所做的那样).因此,文件直接从测试服务器编辑(并从那里提交到SVN).
再一次,由于测试数据库通常落后于prod db,我们经常需要直接从prod服务器编辑代码(请不要责怪这里,我知道这是一件坏事).
我想借此机会将这个过程变成可管理的事情:
在技术方面,我考虑的是:CFEclipse,MXUnit,SVN和ANT的组合
除了SVN,一切都是新的,可以改变你有更好的建议.
有没有人实施过这样的流程,可能是我提示如何开始?
我有一个名为 ComponentUnderTest.cfc 的组件,如下所示:
<cfcomponent output="false">
<cfset externalComponent = Component("Externalcomponent");
<cffunction name="FunctionUnderTest" access="public"...>
<cfset externalComponent.ExternalFunction()>
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)
如何在 MXUnit 测试组件中模拟/存根 externalComponent.externFunction():
<cfcomponent displayname="ComponentTester" extends="mxunit.framework.TestCase>
<cffunction name="MockForExternalFunction">
.....
</cffunction>
??????
<cffunction name=TestComponent>
<cfset componentUnderTest = CreateObject("ComponentUnderTest")>
?????
<cfset componentUnderTest.FunctionUnderTest()> <!--- should call MockForExternalFunction --->
</cffunction>
</cfcomponent>
Run Code Online (Sandbox Code Playgroud)