Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用d3和Karma测试javascript_Javascript_D3.js_Karma Runner_Browserify_Browserify Shim - Fatal编程技术网

使用d3和Karma测试javascript

使用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垫片,但没有任

我正在尝试使用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垫片,但没有任何区别。以下是我的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
}