问题标签 [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.

0 投票
1 回答
66 浏览

f# - 如何生成一个值,使其反映为另一个生成值的元素?

如何生成一个值,使其反映为另一个生成值的元素?

例如下面的代码:

我希望positionGen 包含由pieceGen 和spaceGen 生成的值。 但是,我对如何做到这一点一无所知。

为了给我的问题添加上下文,我的职位列表(又名棋盘)应该在其列表中包含生成的片段和生成的目的地。

这是我的测试:

附录:

0 投票
1 回答
59 浏览

f# - 如何将配置应用于一组基于属性的测试?

如何将配置应用于一组基于属性的测试?

我尝试了以下方法:

但是,该Config成员被设置为私有并且不会编译。

有什么建议么?

0 投票
0 回答
94 浏览

f# - 如何在复杂情况下利用收缩

我刚刚开始使用 FsCheck。我需要生成一些测试数据,这里TestData代表我测试的输入:

我的生成代码如下所示:

所以,这行得通,但我不喜欢调用,Arb.Default.Blabla().Generator因为我无法将 size 参数传递给它们,所以我的测试没有利用那里的缩小。例如缩小Frob optiontoNone或选择更简单的startTime. 在生成这样的单个值时,有没有办法传播该大小参数?- 也感谢您指出任何严重的初学者错误,我真的只是想弄清楚如何使用这个 API。

0 投票
3 回答
99 浏览

f# - 为什么使用向后管道运算符可以解决编译错误?

编译器接受以下行:

但是,当我用括号替换向后管道运算符时,我收到一个错误:

类型不匹配。期望任意 -> 'a 但给定 a ('b -> 'c) -> 属性 'Arbitrary' 类型与类型 ''a -> 'b 不匹配

我不太确定这个错误是什么意思。为什么向后管道运算符编译但括号没有?

附录:

0 投票
1 回答
75 浏览

unit-testing - 什么是针对 F# 中的 nan 值进行属性测试的简洁通用方法?

我正在使用 FsCheck 在 F# 中进行一些属性测试。因此,我希望保证某些条件始终成立,无论输入参数如何。

考虑我为float值定义了一个平凡的恒等函数。

然后我定义了一个我知道应该始终持有的函数的测试:

这是一个微不足道的测试,我只是检查调用我的浮点标识函数是否返回与输入浮点数相同的结果。

然后我将此函数插入​​ FsCheck:

不幸的是,这个属性测试失败了!

当然,回头看,很明显这会发生,我们知道nan <> nan

由于 F# 中的结构比较,这也可能会困扰(稍微)更复杂的涉及集合的测试用例。

如果我为浮动列表设计类似的功能:

又是同样的问题!


显然,我可以通过创建自己的相等测试函数来解决这个问题,这对于float值来说很好,但是扩展到集合变得更加复杂,list因为我必须开始使用List.forall2我的自定义相等函数并且通常将我的代码专门用于每个单独的集合类型.

在 F# 中是否有解决此问题的一般方法?

0 投票
1 回答
101 浏览

f# - 如何组合 2 个任意实例以匹配测试方法签名

我有一个函数应该获得两个实际参数进行测试。这两个值都应由 Arbitrary 实例创建,因为它们需要具有某种不能完全任意的良好格式。
所以我创建了以下代码

但是我现在如何组合这两个 Arbitrary 实例以使它们与测试方法的签名相匹配?

0 投票
1 回答
146 浏览

f# - 无法使基于模型的测试工作

作为练习,我想实现一个 2-3 指树。这应该是尝试FsCheck的基于模型的测试的绝佳机会。我决定尝试更新的实验版本

到目前为止,我只为测试机器编写了一个命令,因为我已经无法完成这项工作——另一方面,它使帖子变得简短。完整代码可在GitHub 上获得。

我的理解是:运行两次以从一个元素Operation<_>.Run构建一个。ResizeArray然后Operation<_>.Check使用相同的数字运行两次以插入到单个元素FingerTree<_>中。

两次通过中的第一个。单元素树传入,添加使其成为(正确的)二元素树,在第一个命令之后与模型进行了很好的比较。

第二个命令总是失败的。Check使用更大的ResizeList(现在是 3 个元素)但与第一个命令中相同的单元素 Tree 调用。再添加一个元素当然不会使其大小为 3,并且测试失败。

我本来希望我需要返回更新的模型,Check以便命令到来。但是你需要返回 aProperty所以这是不可能的。

我完全误解了如何解决这个问题吗?应该如何编写基于模型的工作测试?

0 投票
1 回答
1171 浏览

c# - How to check if an Exception is thrown by a method with xUnit and FsCheck in F#

I'm doing the Diamond Kata in C# with tests writen in F# using xUnit and FsCheck, and I'm having some trouble when trying to check if an Exception is thrown in case of a invalid input by the user (any char that isn't an alphabet letter without any diacritics). Here's how the code looks like now:

The method being tested:

The test:

The problem with my approach is that the test says that no Exception is thrown, but when I run the application with the input shown by the test suite the exception is raised.

Here is the message given by the test suite (I have intentionally omitted the test name and stack trace):

Although the test suite says that for the value ')' no exception is thrown, I did a manual test with it and the expected exception was indeed thrown.

How can I make sure that the Exception is caught by the test?

0 投票
1 回答
344 浏览

f# - 如何使用 Xunit 运行 FsCheck

您好我正在尝试运行FsCheck.Xunit测试xunit.runner.console并获得以下异常:

我正在尝试关注Mark Seemann 的演讲。我的设置如下:

我有一个包含两个文件的库类型项目。一个带有要测试的代码,一个带有测试代码。该项目编译得很好。我没有使用 VS IDE,而只是使用 F# 的 Ionide 插件的 VSCode 文本编辑器。

我尝试了各种设置,有和没有FSharp.Core安装 nuget,有和没有FSharp.Core.

知道在哪里进一步看吗?我已经没有想法了,而且很沮丧。我已经在这上面花了两天时间。:)

0 投票
1 回答
293 浏览

f# - fscheck 没有生成足够随机的数据

我正在玩 FsCheck 所以我有这个实现:

...以及这个基于 FsCheck 的测试:

并且测试永远不会失败。我的猜测是随机生成器产生的 100 个值永远不会大于 100。

这些值不应该更“随机”吗?