我想使用FsCheck (与XUnit一起)创建类型的记录:type QueryRequest = {Symbol: string; StartDate: DateTime; EndDate: DateTime},其中Symbol仅限于3种选项-- ORCL、IBM、AAPL和StartDate和EndDate限制在2000年1月1日和2019年1月1日E 210之间。
然而,我不清楚如何进行。我是否应该使用Arb.generate<T>或Arb.Default或其他一些实用程序来建立测试用例的生成和收缩?
更新1
与问题生成记录有关的后续问题是可用的here。
原件:{符号=“StartDate = 8/9/2057 4:07:10 AM EndDate = 10/14/2013 6:15:32 PM }收缩:{符号=”StartDate = 8/9/2057 12:00 AM EndDate = 10/14/2013 12:00 AM }
更新2
以下是测试套件代码:
namespace Parser
open Xunit
open FsCheck.Xunit
open DataGenerators
module Tests =
[<Fact>]
let ``sanity check`` () =
let expected = true
let actual = true
Assert.Equal(expected, actual)
[<Property(Arbitrary = [|typeof<StockTwitGenerator>|])>]
let ``validate queries`` (q: QueryRecord) =
q.EndDate > q.StartDate发布于 2019-10-29 21:44:57
Arb.filter对给定的任意实例的生成器和收缩器进行筛选,使其只包含与给定筛选器函数匹配的值。这应该能帮助你满足你的需要。
https://fscheck.github.io/FsCheck/TestData.html#Useful-methods-on-the-Arb-module https://github.com/fscheck/FsCheck/blob/master/src/FsCheck/ArbitraryExtensions.fs#L17-17
https://stackoverflow.com/questions/58615430
复制相似问题