澄清:我没有使用JQuery只有纯JS,我需要帮助进行单元测试,因为要阻止"输入"密钥工作正常。
我被困在单元测试中,我试图想象如何覆盖"未覆盖的分支"在addEventListener keyCode = 13的单元测试中,为了防止用户按下输入并意外提交表单,但我对单元测试非常新手,有人可以帮帮我吗?
这里是代码:
Newsletter.js
var Newsletter = (function () {
function Newsletter(handler) {
this.handler = handler;
this.blockKeyEnter = this.blockKeyEnter.bind(this);
this.handler.addEventListener('keypress', this.blockKeyEnter, false);
}
Newsletter.prototype.blockKeyEnter = function blockKeyEnter(e) {
var key = e.charCode || e.keyCode || 0;
if (key === 13) {
e.preventDefault();
}
};
}
Newsletter.spec.js
describe('Newsletter component specification', function () {
var form;
beforeEach(function () {
form = {
addEventListener: function () {},
};
})
it('should intercept enter keypress event and prevent it', function () {
var event = {
keyCode: 13,
charCode: 13,
preventDefault: sinon.spy()
};
var newLetter = new Newsletter(form);
newLetter.blockKeyEnter(event);
assert(event.preventDefault.called);
});
}
我试图填满"未涵盖的分支"但我缺乏进步的想法。
答案 0 :(得分:0)
我不明白你的问题。
但看起来你想要禁用Enter功能?
试一试:
jQuery(function() {
jQuery("#myForm").bind("keypress", function(a) {
if (a.keyCode == 13) {
alert("Enter detected!");
return false;
}
});
});
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<form id="myForm">
<input type="text" />
<input type="submit" value="Submit"/>
</form>
答案 1 :(得分:0)
&#34;分店未涵盖&#34;告诉你有没有可能的输入你没有写过测试。
在您的测试中,e.charCode
是真实的(13 == true
)。但是,您的应用代码表明e.charCode
可能有误(0
,''
,undefined
等。)
您尚未测试e.charCode
是假的情况,而e.keyCode
是真实的。您还没有为e.charCode
和e.keyCode
都是假的编写测试。为这两种情况编写测试,测试将覆盖所有分支。