我也不是FsCheck方面的专家,但我认为除了缺少函数之外,您的代码中还存在一些奇怪的东西。什么
StringExtensions.skipLastChar
做什么?我也不认为
Gen
s可以与
string
好像你在努力排在最后一行。什么
Gen.finalValueOf
应该怎么做?
我使用
Gen.map
要将字符串连接到逗号分隔的列表并将结果括在括号中,请执行以下操作:
let jsonArray =
Arb.generate<string>
|> Gen.arrayOf
|> Gen.map (String.concat "\",\"")
|> Gen.map (fun strs -> "[\"" + strs + "\"]")
let result = Arb.fromGen jsonArray
顺便说一下:我认为您需要考虑生成双引号。如果不逃避它们,JSON解析器将失败。以下是
jsonArray
这样做:
let escapeDoubleQuotes (str:string) = str.Replace ("\"", "\\\"")
let jsonArray =
Arb.generate<string>
|> Gen.arrayOf
|> Gen.map (Array.map escapeDoubleQuotes)
|> Gen.map (String.concat "\", \"")
|> Gen.map (fun strs -> "[\"" + strs + "\"]")