我有一个测试,在得到响应后,我想验证响应的整个模式(不是单个响应节点/值比较)。
样本测试:
[<Test>]
let howtoValidateSchema () =
let request = Request.createUrl Post "https://reqres.in/api/users"
|> Request.setHeader (Accept "application/json")
|> Request.bodyString """{"name": "morpheus",
"job": "leader"}"""
|> Request.responseAsString
|> run是否有一种方法可以将我的预期模式保存在某个地方,一旦得到响应,我就进行比较,以检查响应是否有相同数量的节点(既不少于也不多于预期模式)?
如果我们在FSharp.Data中没有直接的方式,我可以选择其他像HttpFs.Client这样的语言。我查看了FSharp.Data (https://fsharp.github.io/FSharp.Data/library/JsonProvider.html),但无法找到它如何满足模式比较需要用savedExpectedSchemaJson=ResponseJson进行的需求。
发布于 2020-06-16 23:27:40
可以使用Newtonsoft.Json.Schema验证架构:
open Newtonsoft.Json.Schema
open Newtonsoft.Json.Linq
let schema = JSchema.Parse expectedSchema
let json = JObject.Parse responeJson
let valid = json.IsValid schema但是,这假设您在某个地方预定义了一个架构。如果您没有这样的模式,最好使用JsonProvider,谁可以为您推断它。
手动运行调用并将结果保存在sample.json文件中,并使用JsonProvider创建一个类型:
type ResponseSchema = JsonProvider<"sample.json">您可以使用这种类型来基于示例解析任何新内容(前提是该示例具有代表性。
ResponseSchema.parse response这将不会验证模式,但会尽量满足输入的要求。
https://stackoverflow.com/questions/62406879
复制相似问题