Javascript 测试旧html文件中的onBlur属性,未定义处理程序函数消息
我有一本Javascript书中的以下HTML文件:Javascript 测试旧html文件中的onBlur属性,未定义处理程序函数消息,javascript,jestjs,undefined,eventhandler,onblur,Javascript,Jestjs,Undefined,Eventhandler,Onblur,我有一本Javascript书中的以下HTML文件: JavaScript&;jQuery-第6章:事件-事件侦听器 列表王 新帐户 创建用户名: 创建密码: 以及javascript文件: function checkUsername() { // Declare function var elMsg = document.getElementById('feedback'); // Get feedback ele
JavaScript&;jQuery-第6章:事件-事件侦听器
列表王
新帐户
创建用户名:
创建密码:
以及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
}
}
当我运行测试时,我得到
错误:未捕获[ReferenceError:checkUsername未定义]
当我调用元素上的blur()时,我得到了未定义的消息,因此jest似乎试图调用该函数,但由于某种原因,它不可见或未定义
当我使用DOM事件处理程序和事件监听器而不是HTML偶数处理程序属性时,事情就会正常工作。
只是HTML事件处理程序属性已被弃用,而JEST再也不能很好地处理它了吗
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');
});
});