我正在尝试使用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很新,所以我认为我错过了一些东西,但这使我无法开始使用它。
答案 0 :(得分:0)
document.getElementById在Karma下返回null。尝试使用jquery表示法:$(&#39;#myButton&#39;)