跨域AJAX导致的Karma和Jasmine错误

Joe*_*Joe 3 javascript xss ajax jasmine karma-runner

我正在设置使用Jasmine和Karma测试我的JavaScript的测试。Karma在Node.js中运行,并启动Chrome浏览器。

我不断收到错误消息“ Chrome 28.0(Windows)ERROR Script error。at:0”。在进行检查时,我意识到我在代码中创建的某些对象会进行AJAX跨域AJAX调用,并且在它们进行我的Karma测试时崩溃。

我不需要这些AJAX调用就可以使测试成功,但是我希望它们不要使我的Karma测试崩溃。

我愿意以多种方式解决此问题。我可以更改我的Karma / Chrome设置,以便AJAX不会灾难性地失败吗?我可以覆盖XMLHttpRequest,这样就不会提出有问题的请求或没有提出任何请求吗?

注意:即使它也在发出跨域AJAX请求,测试也不会在调试窗口中失败。

我正在使用一个覆盖jQuery的AJAX的测试库。但是,我还有另一个仍在发出AJAX请求的库。

小智 5

我在CORS和AJAX上也遇到了类似的问题,然后我遵循了詹姆的建议。然后,我收到“错误[启动器]:无法启动chrome_without_security找不到二进制chrome_without_security”。

由于我的问题与CORS有关,因此我在这里发现应该将新的浏览器类型添加到karma.conf.js的浏览器列表中。

我这样添加它:

browsers: ['Chrome_without_security'],
customLaunchers:{
    Chrome_without_security:{
        base: 'Chrome',
        flags: ['--disable-web-security']
    }
}
Run Code Online (Sandbox Code Playgroud)

之后,由于我只有一个浏览器,因此无需使用

karma start --browsers Chrome_without_security
Run Code Online (Sandbox Code Playgroud)

我可以输入

karma start
Run Code Online (Sandbox Code Playgroud)

而且它将要求没有安全性的HeadlessChrome,这意味着它不会在CORS上发现任何问题。