如果我一起运行它们,那么我的几个测试用例将失败。他们各自都通过了。在jasmine.js
中添加了一些调试代码后,否则会抛出object thrown error
,我发现所有错误都与类似于
错误列表类似于Uncaught error prop: isTrusted, value: trueerror prop: message, value: Uncaught error prop: filename, value: blob:http://localhost:9882/7098c1f5-dfab-4a9e-8259-654164f3306d
部分prop: filename, value: blob:http://localhost:9882/7098c1f5-dfab-4a9e-8259-654164f3306d
映射到importScripts('http://localhost:9882/ace-builds/worker-html.js');
我不确定在一起执行时该怎么办以及如何通过测试用例。
该路径是正确的,因为我可以在http://localhost:9882/ace-builds/worker-html.js
看到文件
答案 0 :(得分:0)
我无法指出确切的问题。可能是由于使用了blob:
来解决的。问题出在content security policy issue
周围。但是,正如此处(do I need to set content-security policy when running jasmine/karma test cases所指出的那样,如果是csp
,则问题应该一直发生而不是随机发生
”
浏览器在devtools控制台中记录什么消息?如果由于CSP失败,则浏览器将在devtools控制台中记录特定的错误消息,并明确说明其阻止的内容以及原因。因此,如果您在devtools控制台中看不到任何消息,则可以安全地排除CSP作为您看到的失败原因。而且,如果是由于CSP造成的,那么失败就不会是随机的;相反,它们会保持一致。另外,在尚无文档的文档中添加CSP策略将无法解决任何问题;相反,它只会导致进一步的阻塞发生。
”
我做了很多事情来解决这个问题
1)我更改了jasmine.js
以添加调试打印,这可以给我一些提示。
getJasmineRequireObj().ExceptionFormatter = function() {
...
if(error){
// message+=error;
for(var propName in error) {
propValue = error[propName]
message+='\nError object: Property name: '+propName+', value: '+propValue;
}
}
return message;
};
以上内容开始为我打印详细消息。其中一张印刷品为我提供了线索,表明问题可能与worker.js
中的ace.js
个文件有关,因为这是我所知道的唯一使用workers
然后在ace.js
论坛中,我发现我可以完全停止使用workers
。
”
ace尝试加载webworker进行语法检查https://github.com/ajaxorg/ace/blob/master/lib/ace/worker/worker_client.js#L53,则可以使用session.setOption(“ useWorker”,false)禁用它
”
我试过了,但是没有用。我进一步研究了代码,并在ace.js
function createWorker(workerUrl) {
if (config.get("loadWorkerFromBlob")) {...}
}
因此,我尝试通过调用loadWorkerFromBlob
中的editor.session.setOption(...)
来将ace
设置为false,但是两者都没有。
this.editor.setOptions({
readOnly: this.readonlyFormStatus,
loadWorkerFromBlob:false
});
我收到错误misspelled option loadWorkerFromBlob
我仍在找出原因。为了测试,我在option
中更改了ace.js
对象,然后我的测试用例开始工作。
var options = {
....
loadWorkerFromBlob: false,
};
更新-
loadWorkerFromBlob是全局选项,可以使用ace.config.set("loadWorkerFromBlob", false)
进行配置。
也许useWorker无法正常工作,因为它是在尝试创建工作程序之后调用的。