首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >e.keyCode分支未涵盖javascript

e.keyCode分支未涵盖javascript
EN

Stack Overflow用户
提问于 2017-08-30 04:52:52
回答 2查看 174关注 0票数 0

为了澄清:我使用的不仅仅是纯JS,我需要帮助单元测试,因为阻止"enter“键可以正常工作。

我被困在单元测试中,我试图计算如何覆盖addEventListener keyCode = 13的单元测试中的“分支”,以防止用户按enter键并意外提交表单,但是我对单元测试非常新手,有人能帮我吗?

在这里,代码:

Newsletter.js

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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);
  });
}

我正在努力填补“未涵盖的分支”,但我缺乏取得进展的想法。

EN

回答 2

Stack Overflow用户

发布于 2017-08-30 05:12:13

我不明白你的问题。

但是看起来你想要禁用Enter函数吗?

试一试:

代码语言:javascript
运行
复制
jQuery(function() {
         jQuery("#myForm").bind("keypress", function(a) {
            if (a.keyCode == 13) {
				alert("Enter detected!");
                return false;
            }
        });
});
代码语言:javascript
运行
复制
<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>

票数 0
EN

Stack Overflow用户

发布于 2017-08-30 08:47:31

“分支未涵盖”是告诉你,有可能的输入,你还没有写一个测试。

在您的测试中,e.charCode是真实的(13 == true)。但是您的应用程序代码表明,e.charCode有可能成为falsey (0''undefined等)。

您还没有测试过e.charCode是falsey而e.keyCode是真实的情况。您还没有为e.charCodee.keyCode都是falsey时编写测试。为这两种情况编写测试,您的测试将覆盖所有分支。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45952159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档