如何解决在旧的html文件中测试onBlur属性,未定义的处理函数消息
我从Javascript书中获得以下HTML文件:
<!DOCTYPE html>
<html>
<head>
<title>JavaScript & jQuery - Chapter 6: Events - Event Listener</title>
<link rel="stylesheet" href="css/c06.css" />
</head>
<body>
<div id="page">
<h1>List King</h1>
<h2>New Account</h2>
<form method="post" action="http://www.example.org/register">
<label for="username">Create a username: </label>
<input type="text" id="username" onblur="checkUsername()"/>
<div id="feedback"></div>
<label for="password">Create a password: </label>
<input type="password" id="password" />
<input type="submit" value="sign up" />
</form>
</div>
<script src="js/event-listener.js"></script>
</body>
</html>
和javascript文件:
function checkUsername() { // Declare function
var elMsg = document.getElementById('feedback'); // Get feedback element
var elUsername = document.getElementById('username');// Get username input
if (elUsername.value.length < 5) { // If username too short
elMsg.textContent = 'Username must be 5 characters or more'; // Set msg
} else { // Otherwise
elMsg.textContent = ''; // Clear message
}
}
和开玩笑的测试:
const fs3 = require('fs');
const path3 = require('path');
const html3 = fs3.readFileSync(path3.resolve(__dirname,'../event-attributes-post.html'),'utf8');
describe('checkEventAttributes',function () {
beforeEach(async() => {
document.documentElement.innerHTML = html3.toString();
});
it('testOnBlurHandlerAttribute',() => {
console.log('start of onblur test');
var inputit = document.getElementById('username');
expect(inputit.value).toBe('');
const checkUsername = require('../js/event-attributes-post.js');
inputit.focus();
inputit.value = "123";
inputit.blur();
expect(inputit.value).toBe('123');
var feedback = document.getElementById('feedback');
expect(feedback.textContent).toBe('Username must be 5 characters or more');
});
});
我进行测试时得到
错误:未捕获[ReferenceError:未定义checkUsername]
当我在元素上调用blur()时,我得到了未定义的消息,因此看起来像是在开玩笑地试图调用该函数,但是由于某种原因它不可见或未定义。
当我使用DOM事件处理程序和事件侦听器而不是HTML甚至处理程序属性时,一切正常。 仅仅是HTML事件处理程序属性已被弃用,而JEST不能再与之兼容吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。