首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单元测试场景中使用国家代码验证电话号码

如何在单元测试场景中使用国家代码验证电话号码
EN

Stack Overflow用户
提问于 2014-07-29 15:32:29
回答 1查看 2.5K关注 0票数 0

如何使用不同格式的国家代码验证电话号码。我使用的是有效的电话号码lengh mehod,在这里使用电话号码的正则表达式来验证如下

代码语言:javascript
复制
public bool IsValidPhoneNumberLength(string phoneNumber)
    {
        bool isValidPhone = false;
        string pattern = @"^[01]?[- .]?(\([2-9]\d{2}\)|[2-9]\d{2})[- .]?\d{3}[- .]?\d{4}$";
        Regex regex = new Regex(pattern, RegexOptions.IgnoreCase);
        bool result = isValidPhone = regex.IsMatch(phoneNumber);
        return result;
    }

以及下面提到的单元测试用例

代码语言:javascript
复制
Assert.AreEqual(true, company1.IsValidPhoneNumberLength("2345678900"));
        Assert.AreEqual(true, company1.IsValidPhoneNumberLength("0019885021320"));
        Assert.AreEqual(true, company1.IsValidPhoneNumberLength("(212)897-0067"));
        Assert.AreEqual(true, company1.IsValidPhoneNumberLength("1(212)897-0067"));
        Assert.AreEqual(true, company1.IsValidPhoneNumberLength("001(212)897-0067"));
        Assert.AreEqual(true, company1.IsValidPhoneNumberLength("001.212.897.0067"));
        Assert.AreEqual(true, company1.IsValidPhoneNumberLength("001(212)897.00671234"));
        Assert.AreEqual(true, company1.IsValidPhoneNumberLength("001 212 897 0067"));

单元测试是失败的,在测试方法中提到了一些条件。

EN

回答 1

Stack Overflow用户

发布于 2014-07-29 15:55:08

据我所见,这段代码有两个问题:

  1. 您正在使用regexp验证一个复杂的输入字符串。regexp很强大,但它有它的局限性。因此,通过使用regexp将输入解析为字段,然后验证字段(内容、长度等),您可能会做得更好。 而且,有时最好忽略任何你不理解的角色,而不是试着说“这里和这里都可以,但不在那里”。因此,如果您只是从输入中删除任何不是数字的内容,然后检查长度,那么任务就会简单得多(对客户来说也更令人愉快)。 脱衣舞会把上千个箱子折成一个。
  2. 在单元测试中执行多个断言。这太糟了。如果几个断言失败,则只会看到第一个断言。其他的可能会给你提供有价值的信息,说明上一次修改可能有什么问题。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25019213

复制
相关文章

相似问题

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