如何获得"文件" karma-runner中的DOM节点

时间:2014-07-30 12:53:54

标签: karma-runner

我正在尝试使用Jasmine为Karma中的现有Web应用程序编写测试。

在我的index.html文件中,我有一个标记,其中包含一个按以下方式调用的函数:

document.getElementById("myButton")

这在浏览器中使用Web应用程序时效果很好,但在Karma"文档"中运行测试时似乎是指context.html文档,而不是我的应用程序的index.html文档(因此getElementById返回null,因为它在错误的位置查找)。

我应该如何获得正在由Karma测试的JS中的HTML元素的引用?

我希望它默认选择正确的文档,因为Javascript在该HTML文件中。

这是演示我的问题的最简单的例子(它甚至不需要包含测试来证明失败!):

karma.conf.js:

module.exports = function(config) {
  config.set({
    // list of files / patterns to load in the browser
    files: [
      'src/main/webapp/public/index.html',
    ],


    // test results reporter to use
    // possible values: 'dots', 'progress'
    // available reporters: https://npmjs.org/browse/keyword/karma-reporter
    reporters: ['progress'],


    // web server port
    port: 9876,


    // start these browsers
    // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
    browsers: ['Chrome'],


    // Continuous Integration mode
    // if true, Karma captures browsers, runs the tests and exits
    singleRun: false
  });
};

的index.html:

<html>
    <head>
    </head>
    <body>
        <button id="myButton" disabled>My Button</button>
        <script type="text/javascript">
            document.getElementById("myButton").disabled = false;
        </script>
    </body>
</html>

运行karma start然后生成以下输出:

INFO [karma]: Karma v0.12.17 server started at http://localhost:9876/
INFO [launcher]: Starting browser Chrome
INFO [Chrome 36.0.1985 (Windows 7)]: Connected on socket 43zhn5jHmSmDU4QzUqQ6 with id 83536471
Chrome 36.0.1985 (Windows 7) ERROR
  Uncaught TypeError: Cannot set property 'disabled' of null
  at C:/***/src/main/webapp/public/index.html:7

我对Karma很新,所以我认为我错过了一些东西,但这使我无法开始使用它。

1 个答案:

答案 0 :(得分:0)

由于某种原因,

document.getElementById在Karma下返回null。尝试使用jquery表示法:$(&#39;#myButton&#39;)