我正在开发一个使用 SVG 图形进行大部分显示和交互的网络应用程序。我想使用 Karma 创建加载 SVG 资产的单元测试,确保存在某些组/路径等。
我还没有找到任何关于如何做到这一点的直接答案,或者我自己还没有找到答案。我正在尝试通过这样的简单测试(使用 mocha & chai):
describe("SimpleDecalRoulette", function() {
it("decal SVG can be loaded", function() {
var decalLoaded = false;
var SVG = Snap.load("/base/app/img/decal.svg", function(fragment) {
decalLoaded = true;
});
expect(decalLoaded).to.be.true;
});
});
最初,我假设在 karma.conf.js 的“文件”指令中包含 svg 文件就足够了:
files: [
{ pattern: 'app/bower_components/lodash/dist/lodash.min.js', watched: false, included: true, served: true },
{ pattern: 'app/bower_components/jquery/dist/jquery.min.js', watched: false, included: true, served: true },
{ pattern: 'app/bower_components/snap.svg/dist/snap.svg-min.js', watched: false, included: true, served: true },
{ pattern: 'app/js/\*\*/\*.js', watched: true, included: true, served: true },
{ pattern: 'app/img/decal.svg', watched: true, included: false, served: true },
{ pattern: 'app/img/assets.svg', watched: true, included: false, served: true },
'tests/\*\*/\*_spec.js'
],
proxies: {
'/app/img/': '/base/app/img/'
}
但是,尝试从app/img/decal.svg
或base/app/img/decal.svg
同时加载 svg 文件会导致 404 错误。我也尝试过使用“代理”指令,如this SO answer中所述,但还没有让它工作(如上所示)。
这是业力可以做的事情,还是应该以不同方式处理的用例?我需要加载 SVG 并与之交互,以便为这个游戏编写单元测试。