【发布时间】:2019-12-17 14:18:19
【问题描述】:
如何在 Jasmine(单元测试)中监视 focus() 和 select() 函数?
我的功能:
static nextFieldOnAlt(e) {
if (e.keyCode === 18) {
const focusableFields = Array.prototype.slice.call(document.querySelectorAll('input, textarea'));
const indexFocus = (focusableFields.indexOf(document.activeElement) + 1) % focusableFields.length;
const input = focusableFields[indexFocus];
input.focus();
input.select();
}
}
单元测试:
describe('nextFieldOnAlt function', function() {
it('check', function() {
const event = {
type: 'keypress',
keyCode: 18
};
const focusableFields = angular.element(['<input type="number">22</input>', '<textarea>Test</textarea>']);
spyOn(document, 'querySelectorAll').and.returnValue(focusableFields);
Utilities.nextFieldOnAlt(event);
expect(event.keyCode).toEqual(13);
});
});
我得到了错误
焦点不是函数
尝试添加像 querySelectorAll 这样的间谍,但没有成功。
有什么想法、建议吗?
【问题讨论】:
标签: javascript angularjs unit-testing testing jasmine