实施例:api.ts
export const getStuffs = async (term:string): Promise<Stuff[]> => {
const stuffs = await getStuffsFromDB(term);
return stuffs;
}
mock_api.ts
export const getStuffs = async (term:string): Promise<Stuff[]> => {
const stuffs = [
{ ... hardcoded stuff }
];
return stuffs;
}
是否有方法添加CI/CD测试,以比较上面提供的两个示例模块在类型输入/输出方面是否相同:(term:string):Promise<stuff[]>
?
目的是自动提醒开发人员始终复制api.ts
中导出的方法,以便在mock_api.ts
中进行模拟
2条答案
按热度按时间cdmah0mi1#
使用
IfEquals
和BeTrue
这两个泛型辅助类型,我们可以在编译时检查两个类型是否相等。将这两个函数导入到一个文件中,但要确保两个函数都为其中一个函数提供别名,以避免命名冲突。
现在可以检查两个函数类型是否相等。
如果类型不相等,此行将发出编译时错误。
Playground
8i9zcol22#
目的是自动提醒开发人员始终复制api.ts中导出的方法,以便在mock_api.ts中进行模拟
实际上并不需要CI/CD来检查这一点,相反,您可以简单地创建一个定义所需方法的接口:
然后在实现此接口的每个文件中创建一个对象:
向
ApiMethods
添加新方法/属性将强制您在apiMethods
和mockMethods
中实现这些方法/属性。