在函数回调处理程序上断言 javascript 对象的架构

Assert schema of javascript object on function callback handler

提问人:Bruno Peixoto 提问时间:1/31/2023 更新时间:1/31/2023 访问量:30

问:

我有一个结构如下的对象:.我使用 jest 对我的代码进行单元测试,您可以在此处查看:https://jestjs.io{prop_1: function_1, prop_n: function_n}

提供的函数具有一些需要的需求对象,例如,给定的函数返回一个定义的值,或者它断言一些预期数量的输入参数。因此,从我的角度来看,建议我们运行需求值来验证这些条件。prop_${i}{prop_1:requirementCallback_1, prop_n: requirementCallback_n}requirementCallback_${i}function_{i}

我不熟悉 Typescript,但它的名字表明该语言可能有一些开箱即用的解决方案来检查这种情况。您如何看待这种情况?

JavaScript TypeScript 单元测试 回调

评论


答:

0赞 Joshua Opata 1/31/2023 #1

对象是否具有动态属性?然后尝试:

//change void to your appropriate return type
type MyObjectType = Record<string, (someStringArg: string, someNumberArg: number) => void >

如果您尝试使用相同的函数类型定义属性,请尝试:

type SameFunctionType = (string_arg1: string, number_arg2: number)=>void//or any return type for the function
interface MyObjectType{
  prop_1: SameFunctionType;
  prop_n: SameFunctionType;
}

如果您尝试使用不同的函数类型定义属性,请尝试:

interface MyObjectType{
  prop_1: ()=>number;
  prop_2: (arg1: Date)=>number;
}

评论

0赞 Bruno Peixoto 1/31/2023
我试着为单元测试勾勒出一个基于笑话的支持库。看一看:github.com/quivero/prego/tree/feat-refac-atest-workflow/utils/......。在此上下文中,总有一个具有 schema 的对象。如果未给出,则提供的值为默认值。我目前按分支工作{"setup": () => {}, "prepare": (x) => x, "teardown": () => {}}feat-refac-atest-workflow