TL;博士;有谁知道如何安全地使用testbox进行异步冷箱处理程序集成测试?
我正在使用coldbox 3.8.1.00076和testbox 1.1.0.00076并创建了一些类似于下面示例的集成测试,并使它们运行得更快,为它们启用了asyncAll,但似乎BaseTestCase执行方法不是线程安全并与cfc中的所有线程共享请求上下文(和控制器等),因此线程A(aTest)和线程B(bTest)有时可能最终返回完全相同的事件对象,该事件对象将包含任何线程的呈现结果最后完成... ish。
他们在docs中提到通过适当地确定它们所在的变量来确保测试是线程安全的,并且在他们的异步示例中他们重新加载wirebox但是由于线程问题来自共享冷箱对象我怀疑这会有所帮助,我已经尝试了以防万一,但它也打破了测试,因为示例似乎缺少使用现有映射配置线盒,但我没有打算如何做到这一点,因为我怀疑它会解决我的问题问题无论如何。
component extends="coldbox.system.testing.BaseTestCase" asyncAll="true"{
public function aTest() output="false"{
var event = execute(event:"someHandler.a", renderResults: true);
var cbox_rendered_content = event.getValue("cbox_rendered_content", "");
$assert.includes(cbox_rendered_content, "SOME_UNIQUE_CONTENT_TO_A"); //fails here when b content is returned
}
public function bTest() output="false"{
var event = execute(event:"someHandler.b", renderResults: true);
var cbox_rendered_content = event.getValue("cbox_rendered_content", "");
$assert.includes(cbox_rendered_content, "SOME_UNIQUE_CONTENT_TO_B"); //fails here when a content is returned
}
}
<!--- Executes all tests in the 'specs' folder with simple reporter by default --->
<cfparam name="url.reporter" default="simple">
<cfparam name="url.directory" default="test.specs">
<cfparam name="url.recurse" default="true" type="boolean">
<cfparam name="url.bundles" default="">
<cfparam name="url.labels" default="">
<cfparam name="url.reportpath" default="#expandPath( "/test/results" )#">
<cfparam name="url.propertiesFilename" default="TEST.properties">
<cfparam name="url.propertiesSummary" default="false" type="boolean">
<!--- Include the TestBox HTML Runner --->
<cfinclude template="/coldbox/system/testing/runners/HTMLRunner.cfm" >