Javascript 测试旧html文件中的onBlur属性,未定义处理程序函数消息

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书中的以下HTML文件:


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');
    });
});