我正在尝试测试我的一个组件实现的后续方法:
fillTextarea(text, field) {
let startPos = field.selectionStart;
let before = field.value.substr(0, startPos);
let after = field.value.substr(field.selectionEnd, (field.value.length - field.selectionEnd));
field.value = before + text + after;
this.content = field.value;
}
该方法将给定文本插入光标/插入位置的文本字段中。现在我的问题。我目前正在努力寻找一种在插入位置测试插入的方法。插入测试本身工作正常,但我现在只能在位置0测试插入。
我的测试设置是与mocha,karma和phantomjs的vue。 通常的单元测试设置在之前完成(cm是组件)。 $ data中的内容使用'test'初始化。这是我的尝试:
it('should add the given Text to the content area at the cursor position', (done) => {
Vue.config.errorHandler = done;
cm.$el.querySelector('#content').focus();
cm.$el.querySelector('#content').setSelectionRange(4, 4);
cm.fillTextarea(' example', cm.$el.querySelector('#content'));
Vue.nextTick(() => {
expect(cm.$el.querySelector('#content').value).to.equal('test example');
done();
});
});
但似乎根本没有执行.focus()和.setSelectionRange()。 console.logs在调用setSelectionRange()之后立即确认selectionStart为0。我尝试了在google和stackoverflow上找到的不同浏览器的所有版本,甚至是jquery,但它总是将它插入到位置0。
我可以尝试的任何其他想法或我错过的内容?