使用d3和Karma测试javascript
我正在尝试使用Karma测试一个简单的脚本,它使用d3.js绘制图表。脚本使用browserify导入d3 我已将Karma配置为使用browserify和PhantomJS对此文件运行测试,但无论配置如何,它总是会失败,并出现以下错误:使用d3和Karma测试javascript,javascript,d3.js,karma-runner,browserify,browserify-shim,Javascript,D3.js,Karma Runner,Browserify,Browserify Shim,我正在尝试使用Karma测试一个简单的脚本,它使用d3.js绘制图表。脚本使用browserify导入d3 我已将Karma配置为使用browserify和PhantomJS对此文件运行测试,但无论配置如何,它总是会失败,并出现以下错误: PhantomJS 1.9.8 (Mac OS X 0.0.0) ERROR TypeError: 'null' is not an object (evaluating 'node.getAttribute') 我尝试使用browserify垫片,但没有任
PhantomJS 1.9.8 (Mac OS X 0.0.0) ERROR
TypeError: 'null' is not an object (evaluating 'node.getAttribute')
我尝试使用browserify垫片,但没有任何区别。以下是我的karma.conf.js的摘录:
如果您能帮助解决这个问题,我们将不胜感激。只是想澄清一下,实际的代码运行良好,它只是通过因果报应才被破坏。问题是我试图测试的脚本加载在HTML正文的末尾,并使用d3自动触发一个函数。当运行Karma时,它会在加载DOM之前注入脚本,这会导致d3失败,因为它希望DOM元素存在 修复方法是从脚本中删除函数调用,并将其添加到HTML正文的末尾: 现在,这在浏览器和使用Karma中都起作用
PhantomJS 1.9.8 (Mac OS X 0.0.0) ERROR
TypeError: 'null' is not an object (evaluating 'node.getAttribute')
frameworks: ['browserify', 'mocha'],
files: [
'src/static/js/*.js',
'test/js/*.js'
],
preprocessors: {
'src/static/js/*.js': ['browserify'],
'test/js/*.js': ['browserify']
},
browserify: {
debug: true,
transform: ['debowerify', 'browserify-shim']
},
browsers: ['PhantomJS']
<body>
<!-- HTML code -->
<script>
myFunction();
</script>
</body>
window.myFunction = function() {
// code
}