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 在Internet Explorer中运行Karma时,在aurelia测试中使用WaitForElement_Unit Testing_Internet Explorer_Karma Runner_Aurelia - Fatal编程技术网

Unit testing 在Internet Explorer中运行Karma时,在aurelia测试中使用WaitForElement

Unit testing 在Internet Explorer中运行Karma时,在aurelia测试中使用WaitForElement,unit-testing,internet-explorer,karma-runner,aurelia,Unit Testing,Internet Explorer,Karma Runner,Aurelia,我们目前正在开发一个需要在InternetExplorer11上运行的Aurelia应用程序。在我们尝试使用Karma ie launcher在IE11上运行Karma/Tape测试之前,一切都很好 Karma正确启动,一些测试正在执行,直到遇到使用waitForDocumentElement的测试。由于waitForDocumentElement使用承诺,我告诉自己,太好了,我只需要将一些Promisepolyfills加载到Karma中,一切都会像使用Chrome一样开始工作。但是,显然没有

我们目前正在开发一个需要在InternetExplorer11上运行的Aurelia应用程序。在我们尝试使用Karma ie launcher在IE11上运行Karma/Tape测试之前,一切都很好

Karma正确启动,一些测试正在执行,直到遇到使用
waitForDocumentElement
的测试。由于
waitForDocumentElement
使用承诺,我告诉自己,太好了,我只需要将一些
Promise
polyfills加载到Karma中,一切都会像使用Chrome一样开始工作。但是,显然没有

所以,最后是问题。有没有办法让我的测试在Karma上运行,使用
Karma ie launcher以IE11为目标,并且能够在测试中使用
waitForDocumentElement
。这似乎是罪魁祸首,因为它使用承诺

如果需要的话,我可以在我的项目旁边建立一个样本回购协议

谢谢

编辑: 这是“堆栈空间不足”错误的堆栈跟踪。对于记录,rawValue是一个可绑定的属性,我试图在
waitForDocumentelement
中断言它,这样绑定和所有操作都有时间完成它们的工作

 WARN: 'Unhandled rejection TypeError: Unable to get property 'rawValue' of undefined or null reference
   at Anonymous function (http://localhost:9876/base/dist/_test/components/aurelia-numeric-input/aurelia-numeric-input.spec.js?ea0d4f3a76b6b818e30e08a7cbbc07dc5c11e02a:31:17)
   at r (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:31:9351)
   at i.prototype._settlePromiseFromHandler (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:30:14559)
   at i.prototype._settlePromise (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:30:15364)
   at i.prototype._settlePromise0 (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:30:16065)
   at i.prototype._settlePromises (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:30:17395)
   at r.prototype._drainQueue (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:29:3054)
   at r.prototype._drainQueues (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:29:3112)
   at drainQueues (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:29:1236)
   at Anonymous function (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:30:31140)'
WARN: 'Unhandled rejection TypeError: Unable to get property 'rawValue' of undefined or null reference
   at Anonymous function (http://localhost:9876/base/dist/_test/components/aurelia-numeric-input/aurelia-numeric-input.spec.js?ea0d4f3a76b6b818e30e08a7cbbc07dc5c11e02a:36:17)
   at r (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:31:9351)
   at i.prototype._settlePromiseFromHandler (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:30:14559)
   at i.prototype._settlePromise (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:30:15364)
   at i.prototype._settlePromise0 (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:30:16065)
   at i.prototype._settlePromises (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:30:17395)
   at r.prototype._drainQueue (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:29:3054)
   at r.prototype._drainQueues (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:29:3112)
   at drainQueues (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:29:1236)
   at Anonymous function (http://localhost:9876/base/node_modules/bluebird/js/browser/bluebird.min.js?3d186ac6d244691754303d3153839bf42b57f7d1:30:31140)'
WARN: 'Unhandled rejection Error: Out of stack space
   at _compileElement (http://localhost:9876/base/node_modules/aurelia-templating/dist/amd/aurelia-templating.js?1766dc2dd0fa5489caa6a2c286fad9ab686c2f09:2691:7)
   at _compileNode (http://localhost:9876/base/node_modules/aurelia-templating/dist/amd/aurelia-templating.js?1766dc2dd0fa5489caa6a2c286fad9ab686c2f09:2547:11)
   at compile (http://localhost:9876/base/node_modules/aurelia-templating/dist/amd/aurelia-templating.js?1766dc2dd0fa5489caa6a2c286fad9ab686c2f09:2516:7)
   at _compileElement (http://localhost:9876/base/node_modules/aurelia-templating/dist/amd/aurelia-templating.js?1766dc2dd0fa5489caa6a2c286fad9ab686c2f09:2721:9)
   at _compileNode (http://localhost:9876/base/node_modules/aurelia-templating/dist/amd/aurelia-templating.js?1766dc2dd0fa5489caa6a2c286fad9ab686c2f09:2547:11)
   at compile (http://localhost:9876/base/node_modules/aurelia-templating/dist/amd/aurelia-templating.js?1766dc2dd0fa5489caa6a2c286fad9ab686c2f09:2516:7)
   at _compileElement (http://localhost:9876/base/node_modules/aurelia-templating/dist/amd/aurelia-templating.js?1766dc2dd0fa5489caa6a2c286fad9ab686c2f09:2721:9)
   at _compileNode (http://localhost:9876/base/node_modules/aurelia-templating/dist/amd/aurelia-templating.js?1766dc2dd0fa5489caa6a2c286fad9ab686c2f09:2547:11)
   at compile (http://localhost:9876/base/node_modules/aurelia-templating/dist/amd/aurelia-templating.js?1766dc2dd0fa5489caa6a2c286fad9ab686c2f09:2516:7)
   at _compileElement (http://localhost:9876/base/node_modules/aurelia-templating/dist/amd/aurelia-templating.js?1766dc2dd0fa5489caa6a2c286fad9ab686c2f09:2721:9)'

Karma在名为
的窗口上创建一个属性,该属性列出与Karma.conf.js中的模式匹配的文件。通常,在测试入口点模块中会有一些代码,这些代码会减少这个文件名列表,并剥离扩展名,等等,这样它们就会成为适合加载程序的模块名列表。。。在您的案例中是requirejs;)

然后将此模块名称数组分配给requirejs配置的
deps
属性,这会导致requirejs在调用分配给requirejs配置的
回调
属性的函数之前加载所有模块名称

我一直在手动添加bluebird作为第一个依赖项。然后在回调中,我执行一些功能检测,如果浏览器不支持Promise,则将其分配给window.Promise

下面是一个示例,它应该非常清晰地映射到您的设置。相关行用注释表示

const testModules=Object.keys(window.\uuu karma\uuuu.files)
.filter(文件名=>/\.spec\.js$/.test(文件名))
.map(filename=>filename.replace(/^\/base\/dist\/\.js$/g',);
testModules.unshift('bluebird');//使bluebird成为数组中的第一个依赖项。。。这意味着它将是回调函数的第一个参数(见下文)
让我们开始=错误;
require.config({
baseUrl:“/base/global/output”,
路径:{
“bluebird”:“../some/path/to/bluebird.min”//确保加载程序可以找到bluebird
},
deps:testModules,//bluebird是这个模块数组中的第一项
callback:(bluebird:any)=>{//bluebird是第一个arg…还有许多其他arg,但我们不关心其余的
如果(启动){
返回;
}
//polyfill承诺根据需要提供服务。
如果(!(“承诺”在窗口中&“解决”在窗口中。承诺&“拒绝”在窗口中。承诺&“所有”在窗口中。承诺&“竞争”在窗口中。承诺)){
window.Promise=bluebird.Promise;
}
因果关系=真;
窗口。uuu karma_uuuu.start();
}
});

谢谢,午饭后我会看一看的!这有一点帮助,但随后我遇到了一些未处理的拒绝错误:
aurelia模板中的堆栈空间不足
错误。另外,使用waitForDocumentElement的测试仍然失败,但至少我不再有承诺被拒绝的错误。我开始使用waitForDocumentElement测试自定义元素的可绑定属性的更改。也需要获取polyfill吗?同样的技术包括堆栈跟踪等,如您所见,bluebird现在似乎已正确加载,只是缺少了另一件东西:)也许您适合获取,特别是如果模板使用它。