问题标签 [fscheck]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
f# - Why am I receiving a "No arguments provided" error on a property-based test?
The following test fails:
Error:
Message: No arguments were provided
I thought FsCheck would provide the argument for me on each test iteration.
I am referencing the following documentation.
f# - 在实现基于属性的测试时,我什么时候应该在前置条件表达式上使用输入生成器?
在实现基于属性的测试时,我什么时候应该在前置条件表达式上使用输入生成器?
选择特定选项时是否有性能考虑?
在内部,一种方法是否不可避免地使用另一种方法?
我认为与输入生成器相比,执行前置条件表达式需要更长的时间。有没有人测试过这个?
为什么我们需要两者?
f# - 如何递归使用 FsCheck 生成器?
我使用 FsCheck 进行基于属性的测试,因此我为自定义类型定义了一组生成器。一些类型由其他类型组成,并且所有类型都有生成器。为字母数字类型定义了一个生成器后,我想为 RelativeUrl 类型定义一个生成器,RelativeUrl 是由斜线符号分隔的 1-9 个字母数字值的列表。这是有效的定义(Alpanumeric 具有将其转换为字符串的“Value”属性):
尽管它很简单,但我不喜欢使用 Random.Next 方法而不是使用 FsCheck 随机生成器。所以我试着像这样重新定义它:
编译器接受它,但实际上它是错误的:最后一条语句中的“列表”不是字母数字值的列表,而是 Gen。下一次尝试:
但这也不起作用:我返回的是 RelativeUrl 的 Gen,而不是 RelativeUrl 的 Gen。那么在不同级别组合生成器的正确方法是什么?
f# - 从相同类型的自定义生成器调用默认 FsCheck 生成器
我用一些自定义生成器定义了一个类型,以使 FsCheck 生成一些类型的自定义实例。但对于其中一种复杂类型,我想先使用默认的 FsCheck 生成,然后再调整结果。这是一个(简化的)代码:
问题是当 SecondCustomType() 静态方法调用 Arb.generate 时,它会立即调用 SecondCustomType() 导致无限递归。我知道 Arb.generate 必须尊重自定义生成器,所以这就是它调用静态 SecondCustomType() 的原因,但我需要调用 SecondCustomType 的默认(非自定义)Arb.generate 实现。我不能从不同的类型调用实现,因为我的自定义生成器使用 FirstCustomType 的自定义生成器,因此默认的 SecondCustomType 实现必须知道在 CustomGenerators 类型中定义的所有自定义生成器。这是一个糟糕的圈子,我还没有找到一个干净的解决方案(只有解决方法)。
f# - 在执行基于属性的测试时,如何在测试输入上建立条件?
在执行基于属性的测试时,如何在测试输入上建立条件?
例如,当我需要整数时,以下代码会生成布尔值:
这是功能:
我需要这样的东西才能获得合格的整数:
但是,我只是没有看到这个选项。
有什么建议么?
f# - 加速 FsCheck 任意生成
我正在编写一些生成器和一个 Arbitrary,但速度太慢(另请参阅 GC 编号)。我想我的代码有错误,但我不知道在哪里。或者我的方法 ( map2 (fold)
) 是“奇怪的”?
发电机:
随意的:
配置MaxTest = 500
完成,大约需要 5 分钟。
输出(使用#timer):
f# - 为什么我不能在 F# 中使用最新版本的 NUnit 和 FsCheck?
我想使用最新版本的 NUnit、FsCheck 和 F#。但是,当我指向我的包的最新版本时,我的单元测试不会被发现。
但是,我发现了基于属性的测试(即 FsCheck)。
我的包裹如下:
我的 app.config 如下:
c# - c# FsCheck 无法转换 lambda 表达式
我试图让 C# FsCheck 生成器生成一系列用随机字符串初始化的命令。我想出了以下解决方案:
但是,VS 无法构建此代码:
我已经搜索了此错误消息的解决方案,但没有找到任何帮助。我正在使用System.Linq和System.Data.Entity。非常感谢任何解决此问题的建议。
f# - 如何将 FsCheck 与可移植类库一起使用?
如何将 FsCheck 与可移植类库一起使用?
我收到以下错误:
错误无法安装软件包“FsCheck.Xunit 2.5.0”。您正在尝试将此包安装到以“.NETPortable,Version=v4.5,Profile=Profile7”为目标的项目中,但该包不包含任何与该框架兼容的程序集引用或内容文件。有关详细信息,请联系包作者。
这是否意味着 FsCheck 不符合 PCL 标准?
f# - 如何使用 FsCheck 实现多参数生成?
如何使用 FsCheck 实现多参数生成?
我实现了以下内容以支持多个参数生成:
然后,我使用这些参数来测试负责为给定检查器生成移动选项的函数的行为:
在管理多个生成的参数类型时,嵌套 Prop.forAll 表达式是正确的技术吗?
是否有另一种方法可以为被测函数生成多个参数?
这是整个函数:
更新
这是我从马克的回答中得出的问题的解决方案: