【发布时间】:2021-10-15 18:48:36
【问题描述】:
以下是 FsCheck 中基于模型的测试示例:
let spec =
let inc = { new Command<Counter, int>() with
override __.RunActual counter = counter.Inc(); counter
override __.RunModel m = m + 1
override __.Post(counter, m) = counter.Get = m |@ sprintf "model: %i <> %A" m counter
override __.ToString() = "inc" }
let dec = { new Command<Counter, int>() with
override __.RunActual counter = counter.Dec(); counter
override __.RunModel m = m - 1
override __.Post(counter, m) = counter.Get = m |@ sprintf "model: %i <> %A" m counter
override __.ToString() = "dec" }
{ new ICommandGenerator<Counter,int> with
member __.InitialActual = Counter()
member __.InitialModel = 0
member __.Next model = Gen.elements [inc;dec] }
如何为此测试禁用缩小命令?
【问题讨论】:
-
我假设您问的是如何防止缩小使用的命令的 number 个,而不是如何防止缩小实际的命令对象本身?例如,默认情况下,FsCheck 会尝试将
[inc; inc; dec; inc; inc; dec; dec; dec](7 个命令)缩小为[inc; inc; inc; dec](4 个命令)。