unit-testing - 如何在 test.check 中生成随机电子邮件地址?

标签 unit-testing testing clojure property-based-testing test.check

我正在尝试将 gen/fmap 与两个随机字母数字字符串一起使用。然后我用“@”连接它们并附加“.com”。但我在语法上遇到了困难。

第一次尝试:

(gen/fmap str (gen/string-alphanumeric) "@" (gen/string-alphanumeric) ".com")

但是 gen/fmap 仅接受两个参数。

第二次尝试,我将第二部分分组也不起作用

(gen/fmap str ((gen/string-alphanumeric) "@" (gen/string-alphanumeric) ".com"))

编辑:我有一个部分解决方案。它生成一个电子邮件地址,但@之前和之后的部分是相同的。示例:[email protected]

这是部分解决方案

(def gen-full-string
  (gen/such-that #(not= % "") gen/string-alphanumeric))

(gen/fmap #(str % "@" % ".com") gen-full-string) 

我写了 gen-full-string 因为空字符串 "" 导致代码崩溃。由于我已经解析并计划制作验证函数,因此我不关心空字符串。我想测试核心功能而不是边缘情况。一旦我实现验证,我可能会删除 gen-full-string。因此电子邮件生成器将变为 (gen/fmap #(str % "@"% ".com") gen/string-alphanumeric)

最佳答案

加里·弗雷德里克斯有一个图书馆 https://github.com/gfredericks/test.chuck它将字符串正则表达式生成添加到 Spec 中。这使您可以根据需要对电子邮件地址使用简单或详细的正则表达式。

关于unit-testing - 如何在 test.check 中生成随机电子邮件地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68809214/

相关文章:

unit-testing - 原始单元测试

http - HTTP 1.1 合规性测试

Clojure - 使用spectre转换嵌套数据结构,用多个节点替换一个节点

javascript - JavaScript 1.7 中的解构

android - 运行 Android JUnit 测试时,.getText().toString() 无法访问 TextView 中的文本值,导致测试失败

wpf - MVVM Light DispatcherHelper 和带 MSTest 的单元测试

testing - 如何模拟类的内部静态类的私有(private)字段

clojure - 改进用于迭代文本解析的 clojure 延迟序列的使用

unit-testing - 如何在Groovy脚本中设置退出状态

c++ - 是否可以将 Antlr 的 gUnit 与 C++ 目标一起使用?